Skip to main content

Full text of "MSX Magazine 1-25"

See other formats


fus propi 
sprites 



Cóciícjcj 

má^ui 

e y síe i 
des 






@® 



BASIC MSX 
mparado 

n Spectrum y 

ommodore 64 



i • ••• ' 









(Vi SOO \¡M£ 69500/^) 






SYSTEM 




Ordenador Personal 

TOSHIBA HX 10 

Su Ordenado Servidor 



69500 ptas _ 




Características principales: 

Sistema standard MSX. Memoria de 64 K 
RAM, 32 K ROM y 1 6 K de pantalla. 1 6 co- 
lores. 73 teclas. 32 sprites. Sistema mul- 
ticolor 64 x 48 bloques. Sonido: 8 octa- 
vas tres acordes. Conexiones para: casette, 
presora, 2 mandos y futuras expansiones. 

3TOSHIBA 

^™ española de microordenadores s.a. 

CabaHero. 79 Te* 321 02 12 Tetex 97087 EMOS 08014 BARCELONA 
ersalmente que permite disponer de una gran variedad de programas y accesorios compatibles entre sí. 




ANO I - Núm. 5 
Septiembre 1985 



Parece que fue ayer cuando empeza- 
ron las vacaciones. Ahora el verano se 
acaba, y con él se inicia una nueva etapa, 
la del curso escolar. Las noticias, algo 
paralizadas desde el comienzo de la épo- 
ca estival, vuelven a surgir; nuevos jue- 
gos, libros, etc., prometen afianzar un 
poco más el estándar MSX en un merca- 
do en que el ordenador personal se está 
convirtiendo en máquina indispensable a 
cualquier nivel. 

A puertas de importantes ferias de in- 
formática, el estándar sigue sumando 
puntos. 




4 


COMANDOS DE E/S DEL MSX. Instruc- 
ciones completas para el buen manejo de 
los datos. 


12 


NOTICIAS, libros, software, etc., nove 
dades interesantes e importantes. 


14 


SOFTWARE I a actualidad dpi mprradn 
sometida a crítica: Generador de Sprites, 
Panic Junctio, OThelo y Contabilidad Do- 
méstica. 


20 


COMPARATIVA ENTRE LOS BASICs 
DE LOS ORDENADORES MAS POPU- 
LARES. Interesante análisis de los Ipnnua- 
jes de programación del ZX Spectrum y el 
Commodore 64, rivales del MSX. 


30 


SPRITES MSX. Desvelamos el misterio de 
la creación de dibujos animados por orde- 
nador. 


36 


ALGEBRA DE BOOLE. Se introduce al 
lector a una de las ramas matemáticas que 
más afecta a los ordenadores, desde el di- 
seño de circuitos digitales (hardware) hasta 
la planificación correcta de sentencias IF 
(software). 


40 


PROGRAMA. Algebra de Boole. 


42 


PROGRAMA. Los visitantes. 


51 


PROGRAMA. La pianola 


54 


TRUCOS. Nuevos trucos para aplicarlos al 
ordenador y a los programas. ¡Esperamos 
los tuyos! 


56 


CODIGO MAQUINA. Continuamos revé 
lando los importantes secretos escondidos 
dentro del MSX. 


64 


BUSY. Nuestra mascota se presenta ante 
vosotros. 


65 


RINCON DEL LECTOR. Para solucionar 
todos vuestros problemas. 



MSX 3 



^\ entro de los diferentes coman- 
A idos que presenta el BASIC 
J iMSX se pueden hacer varios 
bloques dependiendo de la 
función general que desempeñan, 
así por ejemplo podemos distinguir 
comandos de cálculo como pueden 
ser todas las funciones matemáticas, 
funciones lógicas y demás, coman- 
dos de comunicación del ordenador 
con el ámbito exterior, es decir los 
periféricos, que podemos agrupar 
genéricamente como comandos en- 
trada-salida o abreviadamente co- 
mandos E/S, etc. 

En este artículo nos vamos a cen- 
trar en este último tipo, es decir los 
comandos E/S. 

Agrupar los comandos BASIC en 
un solo bloque, aparte de ser algo 
pretencioso, sólo nos puede servir 
de base para tratarlos más profunda- 
mente y así, a la hora de estudiarlos 
debemos subdividirlos en varios 
apartados si no queremos caer en la 
trampa de la superficialidad. 

4 M8X 



En un principio, los comandos a 
tratar los vamos a agrupar en los si- 
guientes apartados: 

a) Comandos relacionados con el 
almacenamiento digital, bien sea en 
disco o en cinta magnética, con ins- 
trucciones relacionadas. En este 
apartado vamos a tratar los coman- 
dos: BLOAD, BSAVE, CLOAD.CSA- 
VE, LOAD, SAVE, MERGE, MOTOR, 
EOF. 

b) Comandos que introducen da- 
tos en el ordenador por los diversos 
ports que éste posea, bien por tecla- 
do u otras posibles entradas, sin 
contar el port del joystick. 

Los comandos a tratar son: INPUT, 
INPUT , INPUT$ , LINE, INOUT, 
READ. INKEY$, INKEY, INKEY . 

c) Comandos que envían informa- 
ción del ordenador a los periféricos 
por los distintos ports de salida, des- 
de las señales que se envían al tele- 
visor hasta la más sofisticada impre- 
sora. 

Los comandos a tratar son: LIST, 



LLIST, PRINT, LPRINT, USING, PRINT 

Una vez introducidos todos los co- 
mandos que vamos a tratar vamos a 
ir analizando poco a poco por gru- 
pos, intentando dejar claro su funcio- 
namiento donde ejercer lo explica- 
do. 

Comandos de E/S de 
datos para soportes 
magnéticos 

Tanto los diskettes como las cintas 
de cassette, se basan en el almace- 
namiento magnético de datos. Aun- 
que sea innecesario entrar en deta- 
lles sobre el tema, podemos decir 
que todos ellos aprovechan la sus- 
ceptibilidad magnética de metales o 
aleaciones que hace que la llegada de 
datos modifiquen su estado perma- 
nentemente, de forma que al intentar 
volver a leer el dato es posible recu- 
perarlo. 

Para entender un poco mejor ésto, 

\ 



n el MSX 




supongamos una serie de partículas 
magnéticas alineadas a las que des- 
plazamos uniformemente. Si en un 
momento dado introducimos un cam- 
po magnético, una perturbación, mo- 
dificaremos el estado de alguna de 
las partículas. Esta modificación pue- 
de ser por ejemplo el cambio de la 
orientación de la partícula. 

Si posteriormente intentamos ver 
la disposición de las partículas po- 
dremos ver que al llegar a esa partí- 
cula influenciada existe un cambio 
en la disposición respecto a las de- 
más. Esto podría indicar cambio de 
información. Como sabemos, en cir- 

Una completa 
gama de 
instrucciones de 
lectura y 
grabación de 
datos, permiten el 
acceso a la 
información. 



r fAQV\ COfA hNDO BUJ/-X2 
JSW/ HASTA LOS Cü£KNO$' ) 
* J CAMb \o.J ' 




El BASIC MSX es un potente lenguaje 
compuesto de numerosas instrucciones que 
convierte las operaciones más complicadas en 
algo muy sencillo. Esto se debe a que posee 
comandos específicos para cada acción, lo que 
simplifica y facilita bastante su programación. 
Sería tarea engorrosa describir las instrucciones 
que pertenecen a este lenguaje, pero es algo 
que hay que hacer si se desea profundizar en 
las inmensas posibilidades de este estándar. 



cuitos lógicos o digitales, la informa- 
ción puede ser de dos tipos, positiva 
(1), o negativa (0), es decir, todo o 
nada. 

Cuando se de un cambio en la in- 
formación, se podrá entender que ha 
habido una alteración en la disposi- 
ción de las partículas de información. 
Este es el principio del almacena- 
miento digital. La diferencia entre el 
disco y la cita no reside en ésto, sino 
en la forma en que se graban y recu- 
pera los datos, asi, mientras que en 
la cinta el almacenamiento es se- 
cuencial, es decir, un bloque de da- 
tos se almacena a continuación del 
anterior, en un disco es totalmente 
aleatorio, pudiendo darse que el blo- 
que de datos almacenados previa- 
mente, estén detrás de otros almace- 
nados posteriormente. 

Además, la diferencia podemos 
observarla cuando queremos recu- 
perar los datos, ya que mientras que 
en una cinta hemos de leer todos los 
bloques de información anteriores 



para acceder a uno en concreto, en 
el disco, sólo debe leer en el directo- 
rio los sectores donde están almace- 
nados los datos y dirigirse a él. 

Las instrucciones comprendidas 
en este apartado ayudan al manejo 
de esta posibilidad de almacena- 
miento digital que los ordenadores 
poseen. No obstante, no vamos a 
entrar en protocolos, sino que habla- 
remos de las instrucciones genéricas 
utilizadas tanto en el almacenamien- 
to eh disco como en cinta. 

Para entrar en situación, bueno es 
recordar que la información que que- 
remos almacenar y recuperar pode- 
mos dividirla en dos tipos, bytes, y 
programas. Aunque en un plano más 
profundo es lo mismo, ya que todo 
son bytes, podemos dividirlos así de 
cada a nuestro uso y a las diferentes 
instrucciones que hay para uno u 
otro tipo. 

Es fundamental, que no quede en 
el aire la diferencia entre los dos ti- 
pos, podemos decir, que bytes se- 



MSX 5 




FOTO 1; 

La información y los datos, se pueden almacenar de las maneras más diversas, 
desde el cassette hasta el disco compacto, pasando por las cintas de video. 



rán tablas de datos, subrutinas e có- 
digo máquina, etc., mientras que un 
programa es lo más usual que se al- 
macena, aunque como veremos más 
adelante tiene sus matices. 

BLOAD y BSAVE, dos 
comandos para tratar 
los bits y bytes 

Vamos a tratar en un principio, por 
su mayor simplicidad el almacena- 
miento y recuperaión de bytes. 

Normalmente, cuando queremos 
salvar una parte de la memoria del 
ordenador, utilizamos el comando 
BSAVE. Pero hay que tener en cuen- 
ta que al no tener estructura BASIC, 
el ordenador no entenderá a partir de 
que posición tiene que empezar a al- 
macenar, ni hasta que posición tiene 
que hacerlo, por lo que debemos es- 
pecificarle en el comando BSAVE las 
direcciones de comienzo y final de 
esto. 

Si estamos salvando código má- 
quina, tenemos además la opción de 
poder especificar la dirección de en- 
trada a la subrutina, a partir de la cual 
se ejecutará esta. 



Por ejemplo, supongamos que te- 
nemos una rutina en código máquina 
que ocupa 40 bytes a partir de la di- 
rección 39000, cuyo nombre es 'cm' 
y la dirección de autoejecución es 
39010 y una tabla de datos que por 
comodidad la almacenaremos a par- 
tir de la dirección 40000 y que ocupa 
1540 bytes. 

Si queremos almacenar esta confi- 
guración de memoria tenemos dos 
opciones: 

Opción 1). Salvar por separado 
ambas partes con las siguientes ins- 
trucciones: 

La rutina en C.M.: 

BSAVE "CAS:CM", 39000, 39040, 
39010 

y la tabla de datos (suponemos que 
se llama T): 

BSAVE "CAST:T", 4000, 41540 
Opción 2). Salvar ambos ficheros 
juntos como uno solo dada su proxi- 
midad en memoria, siempre y cuan- 
do se utilize conjuntamente la rutina 
y la tabla. Este método ocupa algo 
más de cinta en el cassette (evitán- 
donos las cabeceras, etc), pero el 
sistema queda mucho más compac- 
to. 



Lógicamente, si la rutina no se utili- 
za con la misma asiduidad que la ta- 
bla, será mejor utilizar el sistema an- 
terior que es más general. En esta 
opción, el comando a utilizar es: 
BSAVE "CAS:CM", 39000, 41540, 
39010 

asumiendo que llamamos al bloque 

'cm'. 

En principio esta sería la disposi- 
ción típica para almacenar bytes. 
Ahora podemos empezar a matizar 
varias cosas. 

Por ejemplo, antes del nombre de 
rutina o de la tabla hemos puesto 
CAS:. Esto significa dónde se va a 
direccionar el almacenamiento, es 
decir, en este caso, vamos a almace- 
narlo en cassette, por ello ponemos 
CAS:. Si queremos almacenarlo en 
disco, pondremos A: o B; depen- 
diendo de la unidad que utlicemos. 

Si a la hora de escribir el comando 
se nos olvida algún parámetro reque- 
rido (a excepción de la dirección de 
autoejecución, que es opcional), ten- 
dremos un típico informe de error de 
MISSING OPERAND o un clásico y 
desesperanzador SINTAX ERROR. 
Se da overflow cuando alguno de 
los parámetros tenga un valor supe- 
rior a 65535. 

Las direcciones se pueden especi- 
ficar en hexadecimal, para ello usare- 
mos el prefijo '&H' situado delante 
del número. 

Si durante la grabación ocurre algo 
extraño que nos impida seguir con la 
grabación, es posible interrumpirla 
con CTRL-STOP, dándonos, por un 
lado el informe DEVICE I/0 ERROR y 
por otro el problema de tener que 
volver a empezar. 

Hemos dicho que las subrutinas 
tienen varios parámetros que se de- 
ben especificar, la dirección inicial, la 
dirección final y la de autoejecución. 
Cada una de estas se almacena en 
una varible con los fines que a cada 
ua compite. Estas son, SAVENT 
(FCBF) para almacenar la dirección 
incial, SAVEND (F87D) que almace- 
na la dirección final. La dirección de 
autoejecución, si existe se guardará 
en la variable que almacena la direc- 
ción inicial. 

En el periférico (disco o cinta) que- 
da almacenada la direcció inicial de 
la subrutina (en forma de dos bytes, 



6 MSX 



Programas en 
BASIC, Código 
Máquina o 
ficheros grabados 
en ASCII, se 
tratan y manejan 
sin reparos. 



la dirección final de la subrutina 
(igualmente en dos bytes y los dos 
bytes de autoejecución de la rutina, 
seguidos del contenido de la RAM 
que queremos almacenar. 

Como los ordenadores MSX po- 
seen Z-80, las direcciones están al- 
macenadas en forma de dos bytes 
con el byte menos significativo pri- 
mero. Lo que significa que si quere- 
mos almacenar la dirección &H4082 
(en decimal 16514), esto se hará de 
forma que el valor 82 se guarde en el 
primero y 40 en el segundo. 

Una vez tengamos el bloque sal- 
vado, habrá que tener en cuenta la 
posiblidad de volver a utilizarlo en fu- 
turas ocasiones. Por esta razón, nos 
plantearemos el problema de pasarlo 
de la cinta o el disco al ordenador. 
Para que no tengamos muchos que- 
braderos de cabeza podemos decir 
que todo lo que se almacena con la 
instrucción BSAVE , se puede recu 
perar con BLOAD. Esta es el coman- 
do que tienen los ordenadores para 
recuperar bloques de información, 
como es el código máquina o tablas 
de datos, ostos cuando no están en 
forma de variables dimensionadas. 

La sintáxis de esta instrucción es 



en todo momento similar a la de 
BSAVE, aunque en muchos casos 
no sea necesario especificar algunos 
parámetros. 

Así para el ejemplo anterior de la 
rutina y la tabla, si deseáramos recu- 
perarlos, introduciríamos la siguiente 
instrucción: 

BLOAD "CAS:CM", R 

siendo R, la inicial de la instrucción 
RUN, para que de esta forma se au- 
toejecute. Esta es totalmente opcio- 
nal, es decir, que sino se incluye, la 
rutina no se ejecutará hasta que no- 
sotros no la llamemos externamente 
(principalmente con CALL). No obs- 
tate, en vez de R podemos introducir 
una expresión numérica (bien un nú- 
mero como tal o una variable que po- 
sea un valor adecuado) como direc- 
ción de autoejecución. 

El funcionamiento es muy simple, 
lee un bloque binario inicial que lo to- 
mará como el nombre del programa 
y comprobará si es el mismo que se 
ha indicado en el comando. Si al te- 
clear la instrucción BLOAD, hemos 
omitido el nombre, es decir, hemos 
introducido simplemente el comando 
BLOAD "CAS:", se cargará el primer 
programa disponible en la cinta. 

Si especificamos nombre de blo- 
que (o fichero), buscará ese progra- 
ma. Si el que encuentra no es el soli- 
citado aparece el mensaje SKIP 
"nombre del programa", mientras que 
si encuentra el programa deseado, 
aparecerá el mensaje FOUND "nom- 
bre del programa". 



El nombre cuando se trata de car- 
gar de cassette debe ser de 6 carac- 
teres, el primero de los cuales debe 
ser alfabético. En disco se permiten 
hasta 8 caracteres, aunque pode- 
mos introducir hasta 11 caracteres, 
pero después del octavo se colocará 
un punto y quedarán los tres últimos 
caracteres como descripción del ar- 
chivo, este indicará si el programa en 
cuestión está grabado en formato 
ASCII (.ASO"), está en BASIC (".BA- 
SIC"), o es de cualquier otro formato 
que nosotros deseemos. 

A partir del carácter 12, cualquier 
elemento que aparezca, no se tendrá 
en cuenta. 

Una vez que se ha encontrado el 
bloque y reconocido, se introduce di- 
rectamente a la zona de memoria de- 
seada. Puede haber un error de over- 
flow, cuando algún parámetro sea 
mayor de 65535. 

La velocidad de E/S de 
información, manejable 
desde una instrucción 

Otra caraterística a tener en cuen- 
ta cuanto grabamos programas, es 
la posibilidad de hacerlo con dos ve- 
locidades distintas. 

Pues bien, los ordenadores MSX 
tienen dos velocidades de carga 
cuando trabajan con cassette, 1200 
y 2440 baudios. Para entender mejor 
esto, vamos a definir que es un bau- 
dio, ya que sino quedará muy ambi- 
guo. Sabemos que los ordenadores, 
los datos se almacenan en forma 
binaria y que en esta notación sólo 



Cartucho del interface 
RS232C 



Adaptador acústico 



impresora de puntos 



Impresora plotter 




Televisión 



unidad de floppy disk 



FOTO 2; 



Configuración típica de un sistema MSX, donde todos los periféricos se conjuntan para formar una auténtica estación de trabajo. 



MSX 7 



hay dos signos, es decir, al transmitir 
los datos sólo debemos dar dos im- 
pulsos diferentes arbitrarios que co- 
rrespondan a esos símbolos. 

En transmisión de datos, un bau- 
dio es una de estas informaciones a 
transmitir, es decir, un (1) ó (0). 

Luego decir que un MSX tiene una 
velocidad de transmisión de datos 
vía cassette de 1200 baudios supo- 
ner decir que transmite 1 200 unos o 
ceros por segundo. Con esta defini- 
ción puede quedar clara para cual- 
quier persona. Para los muy puristas, 
diremos que los datos se almacenan 
en bytes que están constituidos por 
ocho bits, y que la velocidad en bau- 
dios corresponde al número de bits 
(no de bytes) que se transmiten por 
segundo. 

Podemos decir que cuando el or- 
denador manda datos a un cassette, 
lo hace vía moduladores FSK con 
contadores variables (dos velocida- 
des). Estos moduladores se encar- 
gan de modificar la salida del ordena- 
dor hacia un periférico que es 
bastante más lento que el ordena- 
dor. Son algo así, como buffers, zo- 
nas intermedias, que son capaces 
de adaptar señales. 

Bién, ya sabemos que los MSX 
pueden transmitir datos a dos veloci- 
dades diferentes cuando trabajan 
con cassette (con discos, esta dife- 
renciación no tiene sentido, ya que 
los canales de salida son distintos). 

Ahora nos preguntaremos como 
decir al ordenador que trabaje en 
una u otra velocidad, lo cierto es que 
decirle que trabaje en la velocidad 
más lenta es fácil, no hay que indi- 
carle nada, puesto que el valor por 
defecto es 1200. 

No obstante, existen instrucciones 
que colocan el contador del modula- 
dor FSK a velocidad baja, porque en 
los MSX no falta de nada. 

Existen varias formas de alterar la 
velocidad, ahora sólo vamos a expli- 
car una, para después, al explicar los 
demás comandos de entrada/salida 
de datos podemos ir introduciendo 
otras formas. 

Una manera cómoda de hacer 
esta modificación es utilizar el co- 
mando SCREEN. La utilización nor- 
mal de este comando es algo más 
compleja de lo que normalmente se 



La velocidad de 
grabación, así 
como el motor del 
cassette, se 
pueden controlar 
directamente. 

utiliza. Así, dentro de este comando 
es posible definir cinco parámetros 
que van a delimitar varios modos de 
operación para la pantalla, los spri- 
tes, el cassette, el teclado y la impre- 
sora. 

El formato general de la instruc- 
ción es: 

SCREEN (MODO PANTALLA), 
(TAMAÑO SPRITE), (SONIDO 
TECLADO), 

(VELOCIDAD CASSETTE), 
(OPCION DE IMPRESORA) 

Son cinco parámetros que en la 
mayoría de los casos no se utilizan 
conjuntamente, pero todos son im- 
prescindibles. El modo de pantalla se 
refiere a las cuatro posibilidades que 
MSX permiten de representación. El 
tamaño de sprite corresponde tam- 
bién a las cuatro posibilidades que 
tiene para definirlos. 

No son el objeto del artículo por lo 
que no encontraremos en detalle, ya 
que son materia de mucha discu- 
sión. 

En cuanto ai sonido del teclado, 
se refiere al click que se oye, si el 
volumen de TV. lo permite, de forma 
que es posible inhibirlo con 0 o acti- 
varlo con algún valor distinto de cero. 

Ahora vamos a pasar por alto la 
velocidad de cassette, para tratarlo 
como plato fuerte de esta descrip- 
ción en el comando SCREEN, vea- 
mos ahora la forma en que se usa la 
impresora. 

Tomando una postura egocentris- 
ta, podemos dividir a las impresoras 
en dos grupos: las compatibles con 
MSX y las que no lo son. En las com- 
patibles con MSX, los caracteres grá- 
ficos coinciden con los del ordena- 
dor, por lo que al decirle que imprima 
un carácter gráfico deseado, lo hará 
bien. Por el contrario, si el juego de 
caracteres gráficos no coincide, al in- 
dicarle que imprima un carácter gráfi- 



co, no lo hará como es de esperar. 
Para evitar esto, con el comando 
SCREEN se puede indicar al ordena- 
dor si la impresora que conectamos 
es compatible o no con el ordena- 
dor. Si no indicamos nada, la máqui- 
na da por supuesto que lo es y listará 
los caracteres gráficos que desee- 
mos, mientras que si indicamos, que 
no es compatibles cuando aparezca 
un carácter gráfico, mandará un es- 
pacio. Para seleccionar esta opción 
pondremos un 0 (impresora compati- 
ble MSX), mientras que si no lo es, 
pondremos un valor distinto. 

Lógicamente, si sólo se quiere mo- 
dificar uno de los parámetros dejan- 
do fijos los demás, sólo hay que po- 
ner éste pero respetando las comas, 
es decir, supongamos que quere- 




FOTO 3; 

El cassette es el soporte más utilizado y 
la manera más barata de almacenar y 
recuperar la información. 



mos trabajar con sonido en el tecla- 
do, pondremos: 

SCREEN „1 

si por el contrario queremos trabajar 
con una impresora de caracteres 
gráficos distintos a los de MSX, intro- 
duciremos: 

SCREEN „„1 

Una vez situados en el tema y 
como explicación final del comando 
SCREEN, explicaremos de cómo se 
puede alterar la velocidad de trans- 
misión. 

En realidad es tan simple que como 
han sido los demás parámetros vis- 
tos en esta situación. Así, si pone- 
mos en el sitio correspodiente 0, la 
velocidad seleccionada será de 1 200 
baudios, mientras que si lo que po- 
nemos es 1, habremos selccionado 
la velocidad superior, de 2400 bau- 
dios. Igual que antes, si sólo quere- 
mos modificar la velocidad, dejando 



8 MSX 



todos los parámetros fijos, podemos 
introducir la siguiente instrucción: 

SCREEN „,1 

y habremos puesto la velocidad a 
2400 baudios. 

Como nota final, el valor por de- 
fecto en la transmisión de datos es 
1200 baudios. 

CLOAD y CSAVE, 
aplicable sólo 
al cassette 

Vamos a seguir utilizando coman- 
dos en orden creciente de compleji- 
dad. Ahora le toca el turno a CLOAD 
y a CSAVE. Se utiliza básicamente 
en la grabación y recuperación de 
datos y programas en cassette sola- 
mente, mientras que los comandos 
BLOAD y BSAVE, permiten elegir el 
tipo de periférico. 

En un principio, vamos a salvar 
programas con CSAVE. La sintáxis de 
la instrucción es: 

CSAVE "(NOMBRE)", VELOCI- 
DAD 

Como podemos ver, aquí también 
tenemos otra de las muchas posibili- 
dades anunciadas anteriormente 
para modificar la velocidad de trans- 
misión de datos. Funciona a nivel de 
parámetros igual que en SCREEN, 
de forma que si ponemos 1 , habre- 
mos seleccionado la velocidad de 
1200 baudios, mientras que si pone- 
mos 2, habremos selccionado 2400. 
Recordaremos que antes los pará- 
metros eran 0 o para 1200 y cual- 
quier otro valor distinto de 0 para ele- 
gir 2400. 

La mayoría de los usuarios se pre- 
guntará, ¿porqué no cambiar la velo- 
cidad y grabar siempre a 2400 bau- 
dios?, puesto que al ser el doble se 
hará con más rapidez. 

Este razonamiento es bueno, 
siempre y cuando el cassette que uti- 
lizemos este en condiciones, por el 
contrario, si graba mal lo cual no es 
nada difícil, podemos tener serios 
problemas para cargar y grabar pro- 
gramas. Por este motivo, se requiere 
un buen aparato o aunque sea me- 
diocre, que esté en óptimas condi- 
ciones. 



Significa esto, que la velocidad 
más alta habrá de evitarla y así tam- 
bién evitaremos problemas típicos en 
estos casos. 

Una vez visto el problema que 
plantea semejante elección, especifi- 
caremos las condiciones que debe 
tener la sentencia para que funcione 
perfectamente. En un principio, el 
nombre que le demos al programa, 
debe tener como máximo 6 caracte- 
res. Si tiene más, sólo tomará los 
seis primeros. Tendremos problemas 
con informes de error si no ponemos 
bien el nombre, las comillas, o un va- 
lor que no sea i el 1 ni el 2, en la 
opción de la velocidad. 

Al empezar a grabar, hay un espa- 
cio de seis segundos en los cuales 



TOSHIBA 


■ 




n 

A 


□ 


n 


L A 



FOTO 4; 

Los diskettes se convertirán en breve 
plaza, junto con el cassette, en dos 
elementos imprescindibles para llevar un 
total control de los datos. 

hay un silencio, y no es efectivo el 
CTRL-STOP. 

Posteriormente si lo es, pero debe- 
remos empezar de nuevo si quere- 
mos guardar la información. 

Una advertencia que a muchas 
personas les parecerá tonta pero 
que ocurre más de una vez, es que no 
hay que olvidarse de pulsar RE- 
CORD en el cassette, ya que si no, 
lo que habremos hecho ha sido per- 
der el tiempo. 

El comando siguiente CLOAD, tie- 
ne algunos matices más que CSA- 
VE, ya que sirve para varias cosas. 
Como es fácil de imaginar, CLOAD, 
sirve en principio, para cargar desde 
cassette o programa que hemos sal- 
vado con CSAVE. La sintáxis general 
de la instrucción es: 

CLOAD (?) "(nombre)" 



Si empezamos por partes, vemos 
que es posible poner el signo (?), 
que va a indicar al ordenador que 
debe verificar o revisar el programa 
que se ha salvado con CSAVE. Esta 
instrucción consiste en comparar el 
programa que hay en memoria, con 
el que se acaba de grabar en casset- 
te. Si hay algún error nos los comuni- 
cará mediante el correspondiente 
mensaje. A continuación tomaremos 
las medidas oportunas y que en la 
mayoría de los casos será la de vol- 
ver a grabar el programa de nuevo., 
así hasta que funcione correctamen- 
te. 

En cuanto a la selección de la ve- 
locidad, aquí no hay problema ya que 
el ordenador sabe a que velocidad 
se está grabado y automáticamente 
la selecciona a la hora de leer los 
datos. 

El nombre del programa es opcio- 
nal en esta instrucción si se omite car- 
gará el primer programa que encuen- 
tre, mientras que si especificamos 
alguno en concreto, empezará a 
buscarlo, si encuentra uno que no es 
el requerido, aparecerá el informe de 
SKIP y cuando lo encuentre, apare- 
cerá el de FOUND, cargándose o ve- 
rificándo, según lo que desee. 

Lo primero que encuentra el orde- 
nador es el encabezamiento, siendo 
este de diez bytes. En él se indican 
las características de lo que hay a 
continuación, tanto el nombre como 
las instrucciones del programa. 

Una vez que ha encontrado el pro- 
grama que se busca, el ordenador 
hace un NEW con lo que todo lo que 
hubiese en memoria por debajo del 
RAMTOP se borra. Si queremos con- 
juntar dos programas, podríamos uti- 
lizar la instrucción MERGE, pero con 
programas salvados con CSAVE, 
esto no es posible. Más adelante ve- 
remos la forma de hacer esto. 

La única precaución a tener en 
cuenta con programas grabados con 
el comando CSAVE, es que deben 
cargar con la instrucción CLOAD. El 
motivo lo veremos más adelante. 

Antes vamos a introducir una nue- 
va instrucción, que aunque propia- 
mente dicha, no es un comando de 
entrada/salida como las anteriores, 
envía una señal al exterior. Nos referi- 
mos al comando MOTOR, cuya sin- 
táxis es: 



MSX 9 



Este permite controlar el motor de 
un cassette, lo que nos da un control 
absoluto sobre la máquina. Esto es 
posible, gracias a un conector que 

MOTOR (ON) (OFF) 

tiene al lado de la entrada MIC. Esa 
conexión más pequeña, es decir, ac- 
túa como un interruptor. 

De esta maneras, si queremos que 
el motor empiece a funcionar, pon- 
dremos MOTOR ON y cuando quera- 
mos paralo, haremos MOTOR OFF. 

A primera vista puede parecer 
poco útil, ya que también estamos 
nosotros para dar a la tecla de PLAY, 
pero cuando desde un programa ne- 
cesita salvar o cargar datos, es muy 
cómodo despreocuparse de contro- 
lar el cassette, cuando lo puede reali- 
zar el ordenador por nosotros. 



Grabar o leer en 
cassette o 
diskette es 
operación que se 
efectúa, de una 
manera sencilla y 
sin 

complicaciones. 



Además, otro posible uso, que a 
más de uno se le ocurrirá es el de ha- 
cer avanzar la cinta hasta una posi- 
ción determinada y cargar o grabar el 
programa deseado. 

Vamos, entonces a tratar las últi- 
mas instrucciones que podemos 
agrupar en este apartado, que son 
LOAD y SAVE. 

Cuando almacenamos un progra- 
ma BASIC, tenemos varias posibilida- 
des de hacerlo: 

a) En forma de bytes, para lo cual 
utilizaremos el comando BSAVE, per- 
diendo la estructura que da el BASIC. 
Este método no es aconsejable para 
los pocos experimentados en la dis- 
posición interna de la memoria en los 
MSX. 

b) En forma de programa de to- 
kens. Es lo más normal y la que de 
hecho se utiliza cuando se almacena 
con CSAVE. No obstante, lo primero 



será explicar que es un token. 

El ordenador, en su ROM, adigna 
a cada comando un número y éste 
es el que se almacena cuando se uti- 
liza dicho comando, es decir, por 
ejemplo, para un comando PRINT, la 
máquina le asigna un valor numérico 
que se grabará con la instrucción. 

c)En formato ASCII, es decir, en lu- 
gar de grabarlo como números que 
corresponden a instrucciones, se 
grabarán los caracteres que forman 
la instrucción PRINT, incluyendo los 
espacios en blanco. 

Esto, en principio indicaría que 
con este sistema ocuparía más cinta 
de cassette, pero es la única forma 
de poder utilizar el comando MER- 
GE. 

Se utiliza el comando MERGE se 
desea unir dos programas BASIC, sin 
perder ninguno. Lógicamente se su- 
perponen y cuando en los dos pro- 
gramas aparecen dos líneas iguales, 
permanece la que se ha cargado en 
segundo lugar. 

La sintáxis de la instrucción es: 

MERGE "(PERIFERICO: NOM- 
BRE DEL SEGUNDO PRO- 
GRAMA)" 

Es decir, para poder utilizar este 
comando, deberemos tener en memo- 
ria un programa BASIC al que quera- 
mos unir otro. Pulsaremos MERGE 
"cas:(nombre)" t aunque el nombre es 
opcional. 

Hacemos hincapié en la caracterís- 
tica de que para ser cargado, antes 
tendrá que haberse cargado con el 
formato del código ASCII, de lo con- 
trario esta instrucción no tendrá efec- 
to alguno. 

Una vez introducidos todos los 
matices, podemos dedicarnos a las 
funciones SAVE y LOAD. La sintáxis 
es como en los demás casos: 

SAVE "(PERIFERICO: NOM- 
BRE) 

Para salvar un programa, aunque 
hayamos puesto el periférico, esto 
no afectará la ejecución ya que sólo 
es posible poner como nombre de 
periférico el de CAS:. 

Ahora bien, si lo que deseamos es 



cargar un programa, inroduciremos 
el siguiente comando: 

LOAD "PERIFERICO: (NOM- 
BRE)", (R) 

donde los parámetros introducidos 
entre paréntesis, son opcionales y de 
éstos, sólo la R es digna de men- 
ción, ya que el omitir el nombre es ya 
una práctica común, no sólo por par- 
te de nuestros lectores, nosotros 
también lo hacemos, El poner la R al 
final de la instrucción, no es más que 
para ejecutar el programa directa- 
mente, es una forma de autoejecu- 
ción. 

Hay que tener cuidado de no in- 
tentar cargar bytes con LOAD, ya 
que estaremos perdiendo el tiempo, 
esta función debemos hacerla con la 
instrucción BLOAD. 

Si tenemos disponible la unidad de 
disco, las cosas pueden variar un 
poco, ya que si queremos sacar o 
cargar un programa en un unidad, no 
tenemos más que escribir: 

SAVE "(NOMBRE)", para salvar 

y 

LOAD "(NOMBRE]", para car- 
gar, aunque estas instruccio- 
nes caen dentro del MSX- 
DOS, que no es el objeto de 
este artículo. 

Existen también matices que po- 
demos añadir cuando trabajamos 
con ficheros, pero no se van a tratar 
aquí, Entre estos, tenemos la posibili- 
dad de cerrar los ficheros con CRTL- 
Z en lugar de utilizar EOF, ect. 

Aquí finaliza esta extensa introduc- 
ción a los comandos E/S más popu- 
lares, Hemos intentado dar una idea 
clara de unos domandos importantes 
dentro de la gestión de entrada/ 
salida de los MSX, como es el alma- 
cenamiento y recuperación de datos 
principalmente vía cassette, que es 
el medio más asequible de hacerlo. 

Aquellos que posean la unidad de 
diskette podrán aplicar todos estos 
comandos con pocas variaciones a 
su medio de almacenamiento. De 
cualquier manera, con este artículo, 
estamos seguros de cubrir un pe- 
queño camino en el largo recorrido 
que tiene por delante el BASIC del 
MSX. 



10 MSX 



TE AYUDAMOS 
EMPEZAR. 




Consigue tu 
"VALUE PAK". 



que incluye: 

- Unidad SVI 328 

- Magnetófono SVI 904 

- Joystick "QUICKSHOT I" SVI 10 

- Diez programas en cassette 



Te ofrecemos una oferta sin precedentes: el 'Valué Pak* Ahora puedes conseguir el| 

ordenador SPECIRAVIUKj SVI ó'Sü. con teclado profesional. 3? K ROM. 80 K RAM. 16 
colores alta resolución, sonido junto con el DATA CASSEflí . un joystick 'Quickshot 
de alta sensibilidad, lü programas, por menos 
de la tercera parte de su valor 

Y es que queremos que entres en el mundo de 
la informática a lo grande, por un precio 
pequeño 

Y que tengas un equipo que vaya creciendo a 
la medida de tus conocimientos Porque el 
SVI-328. gracias al SUPERE X PANDE R. puede 
convertirse en un equipo altamente profesional 
(hasta dos unidades de disco. Interface 
Impresora, cuatro Slots para cartuchos de 

expansión, etc.) con Sistema Operativo CP/M. y la fadlIQUU. de emplear urSd 
amplia variedad de lenguajes COBOL. FORTRAN. ENSAMBLADOR. PASCAl . MBASIC. etc 

Y además el ordenador SPECTRAVIDEO SVI-328 es opcionalmente 
compatible con el standard internacional MSX 




Ahora o nunca. 
Spectravideo. La informática del futuro, hoy 



Concurso programación Sony 



t 21 



La iniciativa de Sony debería ser 
un ejemplo a seguir por los diver- 
sos fabricante. El primer concurso 
de programación, organizado por 
ellos, cuenta con muchos alicien- 
tes, entre los que está el premio al 
ganador que será 500.000 pts. 

El concurso está dividido en dos 
categorías; la primera es para Es- 
cuelas y la segunda para usua- 
rios. 

En el primer caso, podrán parti- 
cipar estudiantes y el tema a de- 
sarrollar será didáctico. El premio 
será de 1.000.000 pts., repartidos 
equitativamente por la escuela y el 
ganador. 



En el segundo caso, participa- 
rán los usuarios del sistema, que 
podrán desarrollar un programa 
basado en cualquier tema. 

Esta categoría, se caracteriza 
por los premios, ya que éstos va- 
rían, puesto que el ganador se em- 
bolsará, la nada despreciable can- 
tidad de 500.000 pts. Se repartirán 
además, 10 premios de 100.000 
pts., y habrá premios de consola- 
ción para todo el que participe. 

La preocupación por el tema de 
la informática es manifiesta, para 
ello, darán clases de la materia a 
todos aquellos profesores que de- 
seen asistir a ellas. 



Expreso de Oriente 



No podía faltar en esta sección, donde 
este mes las noticias son bastantes inte- 
resantes. 

El mercado japonés de ordenadores 
MSX no hace más que crecer y crecer. 
Nuevos ordenadores se están presentan- 
do casi continuamente y las aplicaciones 
de estos ordenadores empieza a hacerse 
notar. 

Para empezar, el desarrollo tecnológi- 
co nipón tiene una meta: Europa. 

Parece ser, que el viejo continente está 
en el punto de mira de los importantes 
fabricantes de ordenadores personales y 
de equipos de alta fidelidad. Como era de 
esperar, España, Holanda, Francia e Italia, 
se han convertido en el terreno donde se 



va a desarrollar una importante lucha en 
pos del mercado. 

Sin embargo, la guerra sin cuartel, ten- 
drá lugar en el mercado americano. Indu- 
dablemente, puede que con resultados 
desiguales, pero las modificaciones a las 
que están sometiendo los diversos orde- 
nadores que se esperan enviar para su 
pronta comercialización, van a dar que 
pensar. 

Una unidad de diskette y software in- 
corporado, 128K memoria RAM de video, 
así como 1 28K de memoria para el usua- 
rio. También se le añaden interesantes 
opciones, van a dar mucho trabajo a los 
ingenieros de Commodore, si desean 
combatir el gigante amarillo. 



Z800, 
¿sucesor 
del Z80? 



La gran incógnita en el 
desarrollo de la segunda 
versión del MSX se va a en- 
trar en la Unidad Central de 
Proceso. Z800 y Z8000, son 
las dos posibilidades con 
las que se cuenta a la hora 
de hacer un ordenador de 
16 bits. 

Esta versión, totalmente 
compatible con el Z80, per- 
mitirá al ussuario y a los fa- 
bricantes, optimizar el ren- 
dimiento de estas compu- 
tadoras. A unos, por su fá- 
cil manejo, a otros, por su 
flexibilidad y potencia. 

Además de contener ins- 
trucciones nuevas, trabaja 
a una velocidad bastante 
elevada y tiene el mismo 
juego de instrucciones que 
su predecesor, el Z80. 

Por el momento, este 
chip no se va a comerciali- 
zar. Las razones siguen 
siendo un misterio, ya que 
este chip se anunció hace 
varios años y aún no he- 
mos visto ejemplar alguno. 
De cualquier manera, Zilog, 
fabricante de esta versión 
más potente del Z80, cree 
que a finales del presente 
año, habrá información téc- 
nica y manuales sobre este 
chip y que las primeras uni- 
dades aparecerán a princi- 
pios o mediados del año 
1986. 



Anaya Multimedia 
sus libros para MSX 




Actualmente, la bibliografía exis- 
tente para los usuarios del sistema 
MSX, deja mucho que desear. Hay 
pocos libros que puedan ayudar al 
usuario medio a defenderse de las 
pegas que impone un lenguaje com- 
pleto y nuevo Como es el BASIC 
MSX. 

Anaya Multimedia entra en el 
campo del MSX con un libro, que no 
basa su contenido en programas de 
aplicación, pero que puede convertir- 
se en una ayuda inestimable a la 



hora de ver casos reales. 

La primera entrega, el el Libro gi- 
gante de los Juegos para MSX, 

no es una guía práctica de los co- 
mandos del MSX, pero aunque sólo 
sean juegos, éstos vienen tan bien 
comentados que en momentos pue- 
den ser más útil que cualquier otro 
manual. 

Los programas se comentan por 
secciones y se explican tanto las va- 
riables utilizadas como su significa- 
do. 



W4 



Andr** Lacty « 
• El toro gigante ctolbs 

juegos 

para MSX 



Serma y Konami : la creación de software 



Serma, conocida empresa en el 
ámbito del software, es el distribuidor 
en exclusiva para España de los jue- 
gos de otra importante empresa; Ko- 
nami. Expresamente dedicada a la 
creación de software para ordenado- 
res MSX, Konami se introduce en 
nuestro país para ofrecer esos juegos 
que tan famosos nombre tiene más 
allá de nuestras fronteras. 

Los programas vienen en el formato 
de cartucho ROM, característica que 



i 



agradecerán los usuarios al facilitar y 
simplificar el proceso de cargar un jue- 
go en el ordenador. El lanzamiento de 
estos juegos es inminente. Los prime- 
ros en salir serán el conocido Hyper 
sport, Yir ar Kung-Ku, Tennis y Circus 
Charlie. Los títulos irán apareciendo 
paulatinamente y los usuarios tendrán 
la posibilidad de comprobar la gran ca- 
lidad de estos juegos en la feria del 
Sonimag y en la Feria-micro en el 
Corte Inglés. 

MSX 13 



SOFTWARE 



Programa: Generador de 
Sprites. 
Tipo: Juego 
Distribuidor: ACESA 
Formato: Cassette 



6 Qué es un sprite^. La palabra 
quizás nos parezca un poco desco- 
nocido pero que sin duda hemos vis- 
to muchos de ellos. Una definición 
acertada y comprensible sería: una- 
serie de puntos referidos a unas 
coordenadas situadas en el espacio 
cartesiano, en conjunto formarían un 
dibujo o un mensaje que asociaría- 
mos en nuestro interior a un significa- 
do. 

Muchas veces hemos visto dibu- 
jos generados por un ordenador y 
nos hemos vuelto locos pensando 
cómo se puede hacer eso (desde 
luego es para pensarlo), pero hoy en 
día. todos los amantes del dibujo, la 
perspectiva, etc., a pequeña escala 
podremos tener un gran elemento de 
ayuda con este programa "Genera- 
dor de Sprites". 

Siempre nos hemos visto frente a 
juegos que por decir de alguna ma- 
nera, nos lo daban todo hecho", y 
nosotros con ayuda de nuestros cur- 
sores o joytick, jugábamos limitando 
en cierto modo nuestra capacidad 
creativa. 

Aquí podemos ser jugadores y 
creadores a la vez. Creadores por- 
que se nos permite en la modestia 
del programa explayar nuestros po- 
deres o facultades creativas y aún 
más de diseño o dibujo, y jugadores 
porque ¿quién no se divierte creando 
y desarrollando sus ideas y fanta- 
sías 9 . 

Generar un sprite con este progra- 
ma es muy fácil de realizar, observe- 
mos la pantalla un cuadrado de 16 x 
16 casillas, que rellenaremos en or- 
den y medida a nuestro gusto, es de- 
cir, teniendo en cuenta el sprite que 
vamos a generar. Este se irá forman- 



do porque la casilla o casillas que va- 
yamos designando se cambiarán de 
color. 

Aparecerá en la casilla (1, 16), un 
cuadrado de color, que iremos mo- 
viendo a lo largo y ancho del cuadra- 
do, es decir, vertical y horizontalmen- 
te. Para ir rellenando casillas bastará 
que una vez colocada la casilla móvil 
en el lugar adecuado pulsemos la 




barra espadadora, y ese cuadrado 
formará parte de nuestro sprite. Si 
por el contrario nos hemos equivoca- 
do, y ese no era el sitio adeecuado, 
bastará con pulsar la tecla designada 
en nuestro ordenador por las siglas 
"BS", junto con la barra espaciadora 
en el cuadrado que deseemos bo- 
rrar. 

Terminaremos nuestro sprite y a la 
vez nuestra obra al pulsar "retum". 
Durante todo el proceso de creación 
de nuestro sprite tendremos un cua- 
drado de menores dimensiones que 
nos irá reflejando la figura que vaya- 
mos creando, para visulizarlo de una 
forma más clara, la síntesis del spri- 
te. 

Una vez terminado nuestro sprite, 
los puntos de las coordenadas utili- 
zadas servirán en un futuro como 
instrucciones si deseamos volver a 
generarlo. 

Debajo de estas instrucciones, se 
imprime la pregunta. ¿Quieres pasar- 
lo a impresora 9 (S/N), teniendo con 
esto la posibilidad de crear un amplio 
archivo de sprite, ya que al tener los 
comandos para su realización, po- 
dremos recrearlo siempre que quera- 
mos. 

Con este programa podremos ge- 
nerar tantos sprites como necesite- 



mos, y con una gran capacidad de 
singularidad reflejo de lo que noso- 
tros seamos capaces de generar. 

Más de un juego de diversión es 
un juego didáctico, pero no cabe 
duda que el entretenimiento está 
asegurado. 



I 



Puntuación: 
Presentación: 6 
Claridad: 8 
Rapidez: 7 



Programa: Panic Junction. 
Tipo: Juego 
Distribuidor: E.M.S.A. 
Formato: Cassette 



¿Quién más de una vez no ha su- 
bido a un tren, y ha disfrutado todo 
el trayecto viendo pasar grandes 
mostruos de acero a velocidades in- 
sospechadas?, o ¿quién más de una 
vez no ha jugado con sus máquinas, 
vagones, a ser jefe de estación ha- 
ciéndolas pasar por los caminos más 
raros y circunstancias más extra- 
ñas? 

Cuando miramos las vías férreas, 
nos parecen un entramado sin fin 
que se confunde en nuestras men- 
tes, pues algo más fácil que todo 
esto aunque de mayor rapidez y di- 
namismo nos ofrece este programa. 

No es un juego de complicado 
manejo, aunque nuestros objetivos 
principalmente son tres. En nuestra 
pantalla, aparece un primer cuadro 
superior por el que van circulando lo- 
comotoras y aquí surge un pequeño 
problema que es que no siempre van 
circulando por la vía que deberían. 

Un segundo cuadro de menores 
dimensiones que nos señala el nú- 
mero de locomotoras con las que en 
ese momento vamos a jugar y la difi- 
cultad que presentan, es decir un 



14 MSX 



croquis o la visión general para que 
podamos coordinar nuestros movi- 
mientos y saber a que vía debemos 
hacer que se dirija la locomotora que 
circula en una vía ya ocupada. 

Y un tercer cuadro en el que más 
atención debemos de mostrar. Aquí 
nos encontramos nosotros como 
"salvadores" de que no ocurra una 
catástrofe. Nos encontramos meti- 
dos en un cuadro que a primera vista 
parece un laberinto, pero no entraña 
mayor dificultad que la rapidez y agi- 
lidad mental. Dentro del cuadro hay 
un número definido de palancas que 
corresponderán a los trayectos de 
vía que permiten el traslado de una 
locomotora a otra vía para así subsa- 
nar un choque. Nos moveremos a lo 
largo y ancho de este habitáculo, 
ayudados por nuestros cursores, o 
también con nuestro joystick. Una 
vez que lleguemos a la palanca que 
deseamos mover tendremos que 
pulsar la barra espaciadora y con 
nuestros cursores superior e inferior 
dar la orden para que así se despla- 
ce la locomotora a una u otra vía, 
quiere esto decir que si nosotros gi- 




ramos la palanca hacia arriba, la lo- 
comotora cambiará su trayecto al de 
la vía superior; si por el contrario gira- 
mos la palanca hacia abajo, descen- 
derá de vía. Si necesitamos ir a otra 
palanca para que nuestro guarda-a- 



gujas pueda evitar otro choque, bas- 
tará volver a pulsar la barra espada- 
dora y quedará libre para moverse 
en cualquier dirección que desee- 
mos. 

Tal vez resulte a primera vista un 
juego monótono, pero cuando entre 
en él, y vea sus propias característi- 
cas, es decir, las sensaciones que a 
usted le ofrezca, verá que es un jue- 
go en el que tendrá que adelantarse 
al ordenador. El juego terminará 
cuando hayamos permitido que cho- 
quen cinco locomotoras, pero confia- 
mos en sus reflejos para que esto no 
ocurra. 

En su formato es un juego agrada- 
ble de ver, ya que tiene muchos pun- 
tos para concentrar vuestra visión; 
las locomotoras, el croquis de funcio- 
namiento de éstas y nosotros. 

El color está muy conseguido y en 
conjunto es un juego muy singular. 



I 



Puntuación: 
Presentación: 8 
Claridad: 7 
Rapidez: 8 



MSX 15 



SOFTWARE 



Programa: Contabilidad 

Doméstica 

Tipo : Juego 

Distribuidor: Dimensión 
New 

Formato: Cassette 



Dentro de las diversas formas en 
que podemos llevar un orden clasifi- 
catorio de nuestros quehaceres do- 
mésticos, nos encontramos con este 
programa, pensando para que poda- 
mos aprovechar y utilizar nuestro or- 
denador, con un fin tan importante 
como es llevar la contabilidad, es de- 
cir nuestra contabilidad casera. 

Hoy en día, un elemento tan im- 
portante como es atender de manera 
específica nuestra economía se vé 
informatizado a un nivel que propia- 
mente puede hacer y dar las satis- 
facciones de los amantes del equili- 
brio y la información. 

La utilidad de la contabilidad de 
todos es conocida, pero vamos a ha- 
cer referencia a las características de 
este programa y a los medios y ge- 
neralidades a los que está referido. 

LLevar bien una economía do- 
méstica hace necesaria la presencia 
de un programa el cual nos pueda 
ayudar y a la vez distraer, sirviéndo- 
nos en los fines a los que haya sido 
destinado. 

Ese sector dedicado a la peque- 
ña empresa también puede encon- 
trar aquí, un fiel sustituto de las per- 
sonas dedicadas a esta ciencia, y 
además conseguir a la vez una infor- 
mación detallada y concisa la cual no 
se escape a nuestro entendimiento. 

El tiempo real en que este progra- 
ma se mueve, es el tiempo que dura 
un ejercicio económico, es decir, si 
usted, ha decidido comenzar su co- 
tabilidad doméstica, hoy día 1 -junio- 
85, este programa le registrará todas 
las entradas y salidas efectuadas en 
el período de un año a contar desde 
la fecha antes citada, las cuales se- 
rán recogidas en una cinta cassette 
que usted dispondrá para ello. 

El aspecto interno que destaca- 
mos, es una terminología dirigida al 



carácter doméstico de nuestro orde- 
nador. Debemos tener en cuenta 
que nuestras posibilidades de rela- 
cionar exteriormente nuestra contabi- 
lidad, se ve favorecida por los recur- 
sos con que contamos en el 
programa, es decir, la opción de po- 
der remitir nuestros movimientos has- 
ta un total de nueve cuentas banca- 
rias, permitiéndonos, en el momento 
que los solicitemos, en el momento 
rio y el saldo correspondiente a la fe- 
cha indicada. 

Se le permite a su vez indicar 
hasta veinte conceptos diferentes de 
entradas y salidas y el interruptor 
hasta 250 registros de movimientos, 
además de las nueve cuentas ban- 
carias ya citadas, todo ello por fiche- 
ro. 

Obviamente podría obtener tan- 
tos ficheros como desee, teniendo 
el propio programa un opción espe- 
cializada para la lectura y grabación 
de los mismos. 



'. '- ~* i 3r\ 


MEW '.ONThI IL I V*+t> PEf ■ . 


1. 


-€NT*?rtD*4 DC D**TOS 


3. 


BUSQUE*** D€ D*TQS 


3. 


-hnuu*: i on datos 


A . 




y. 


-PREVISIONES 


6. 


-DATOS MNClWIOS 


T . 


-SA|_DOS BAttCAfflOS 


8. 


-ORABACION FICHERO 


9, 


-CECTUK* FICHEROS 


O. 


-DEFINICION CONCEPTOS 


1 rxl 


t«vu« mi* of c ion <NWN 



Todos estos pasos se irán conse- 
cutivamente haciendo de manera 
que no le resulte complicada su eje- 
cución el programa le irá indicando 
en todo momento los pasos a seguir. 

El menú principal nos presenta 10 
opciones de 1 al 0, para que noso- 
tros introduzcamos en cada uno de 
ella los registros que queramos guar- 
dar o anotar. 

En la opción 0 se nos capacita 
para nombrar hasrta 20 conceptos 
forma que tendremos de denominar 
aquellos 1 campos específicos que 
queramos llevar más regularmente 
en nuestra economía, para su ejecu- 
ción debemos tener apretado el 
"caps lock", el cual nos permitirá re- 
flejar en la pantalla las instrucciones 



de mayúsculas y a su vez la posibili- 
dad de reflejar en el ordenador las 
entradas y salidas de los recibos o 
gastos remitido a cada uno de los 
conceptos. 

El menú anteriormente citado se 
nos presenta con diez opciones las 
cuales vamos a enumerar señalando 
sus caracteristicas más importantes. 

Le permite dar nombre hasta a 
20 conceptos, aquellos que usted 
disponga para llevar más regular- 
mente su contabilidad. 

A su vez en la parte inferior de la 
pantalla, se indican tres opciones, 
una primera opción para definir con- 
ceptos, una segunda que los modifi- 
ca y una tercera para volver al menú 
principal. Una vez tenga definidos los 
nombres de los conceptos, le irán 
permitiendo registrar todos los movi- 
mientos a nivel de entrada y salida. 
Entonces utilizaremos la opción n° 1 , 
denominada entrada de datos, en la 
cual aparece escrito el orden en que 
tiene que introducir los datos y el lu- 
gar adecuado para ellos. Estos datos 
hacen referencia, al día, mes y año 
(DDMMAA), n° de c/c, cantidad o vo- 
lumen, etc. 

La opción n° 2, denominada, 
"búsqueda de datos", nos permite 
acceder a cualquier dato, que haya- 
mos registrado anteriormente y los 
cuales podremos obtener por fecha, 
concepto, cantidad y memo (referen- 
cia del concepto), teniendo también 
la posibilidad de obtener un listado 
de todos ellos para hacernos una 
idea de la situación. 

Anulación de datos, opción n° 3, 
como su propio nombre indica, esta 
nos capacita para poder anular o 
modificar algún error en la entrada de 
datos y así borrarlo del fichero princi- 
pal. 

Opción n° 4, Balance: Es una de 
los apartados más importantes por- 
que nos permite establecer una vi- 
sión de los datos registrados y el po- 
der obtenerlos por impresora. 

Opción n° 5, Previsiones: Nos 
permite dotar provisiones referidos á 
los datos y balances correspondien- 
tes. 

Opción n° 6, Datos bancarios: 
Nos hace referencia a las nueve 
cuentas bancarias que podemos utili- 



16 MSX 



zar para llevar nuestra contabilidad y 
las cuales podremos conseguir sa- 
ber su saldo en cualquier momento. 

Opción n° 7, Saldo bancarios: 
Referida integramente a la anterior, 
nos ayudará a obtener el extracto de 
la cuenta que elija pudiendo además 
regularizar el saldo si lo desea. 

Opción n° 8, Grabación de fiche- 
ros: Nos permitirá resguardar todos 
los datos registrados en una casset- 
te que usted habrá dispuesto para 
ello. 

Opción n° 9, Lectura de ficheros: 
Podrá con esta opción leer de la cin- 
ta un fichero, aunque perderá los da- 



Programa: O'Thelo. 
Tipo: Juego 

Distribuidor: Dimensión 
New 

Formato: Cassette 



en las que más de una vez nos han 
puesto nuestros compañeros o ami- 
go de partida. 

El hombre siempre ha sido pre- 
cursor de avances, nuevos prototi- 
pos y ha desarrollado su dapacidad 
resolutiva tanto en la creación de ins- 
trumentos de mejora para la socie- 
dad, como elementos para satisfacer 
y cultivar su interior en sus momen- 



Todos aquellos que hayamos pa- 
sado largos y entretenidos ratos ju- 
gando, sabemos las principales ca- 
racterísticas de este juego, es decir 
su infraestructura, las reglas en las 
que se basa, los momentos de duda, 
concentración, nerviosismo y como 
no, la capacidad de desarrollo, tácti- 
ca y previsión frente a los duros mo- 
vimientos y situaciones angustiosas 



- *>^r t o 

M-Mc tonado 
r*or mal 




tos de ocio, aquí aparece con un pa- 
pel preponderante v con el futuro a 
su favor, el software. 

Dentro de los numerosos progra- 
mas que inundan el mercado aunque 
cada día los nuevos programas son 
una superación de los anteriores, en- 
contramos aquellos juegos que una 
vez fueron moda y que hoy forman 



tos que posea en la memoria del or- 
denador. 

Estas son las caracteristicas es- 
tructurales del programa, las cuales 
aplicadas a una contabilidad domés- 
tica pueden ser de gran utilidad para 
conseguir llevar una economía equili- 
brada y al día. 



i 



Puntuación: 
Presentación: 8 
Claridad: 6 
Rapidez: 8 



un conjunto de clásicos, indispensa- 
ble para cualquier videoteca de soft- 
ware, entre los que se encuentra 
OThelo. 

Las personas en nuestro "ego", 
experimentamos gran satisfacción 
cuando vencemos a nuestro adver- 
sario, habiéndonos valido de nuestra 
astucia y habilidad, en este juego po- 
dremos experimentar todo ese tipo 
de sensaciones e incluso nuevas a) 
sumirnos en el mundo de los ordena- 
dores y observar lo necesaria y satis- 



MSX 17 



SOFTWARE 



factoría que resulta su compañía. 

El carácter general que caracteri- 
za a todos los juegos de reflexión y 
dinámica estructura se vé individuali- 
zado en este juego tan singular, re- 
flejando como está claro las posibili- 
dades que tenemos de elegir 
adversario: persona u ordenador. 

Es juego creado con una ampli- 
tud de miras para distraernos, co- 
menzaremos cargando el juego en 
nuestro ordenador y éste realizará un 
pequeño estudio de la situación, es 
decir: 

1 0 Si nosotros deseamos jugar 
con el ordenador (implacable), 
o 

1 o si jugaremos con otra perso- 
na como adversario. 

Si optamos por la segunda op- 
ción mediremos nuestra capacidad 
de estrategia frente a nuestro com- 
pañero y seguro que pasaremos un 
rato o una tarde de los más agrada- 
ble. 

No obstante si aceptamos a 
nuestro ordenador como compañero 
de diversión y distracción, sin duda 
no hemos elegido mal, pero ... pero 
será un adversario al cual se le pue- 
da hacer cambiar de opinión con una 
agradable locución o una inminenete 
sentencia, pues nuestro ordenador 
jugará con el tesón, implacabilidad, 
sangre fría y astucia de la que pudie- 




nuestras posibilidades pues el orde- 
nador no nos dará alternativa para 
volver atrás ya que jugará siempre en 
cualquier nivel de los que estemos, 
al máximo de sus posibilidades. 
Tampoco se nos permitirá hacer 
trampas, pues el mismo ordenador 
será arbitro y señalará "jugada ilegal" 
cuando hayamos cometido alguna 
falta. 

La estructura de la pantalla es 
muy fácil, en el margen lateral dere- 
cho, nos aparece un cuadrado de 
8x8 casillas, en donde irán colocan- 
do las fichas a lo largo de la partida, 
en el lado lateral opuesto nos dirá el 
turno del jugador al que le toca mo- 
ver y también nos dirá cuando reali- 
cemos una "jugada ilegal". 

Abajo en el margen inferior seña- 
lará las fichas con las que contamos 
al inicio de la partida y así a lo largo 
de ella. Esto se verá reflejado en la 



normal seremos nosotros quienes 
demos fichas de ayuda al ordena- 
dor. 

El juego comienza presentándo- 
nos dos fichas negras y dos blancas 
(en el caso del nivel normal), situa- 
das en diagonal, en el centro del 
cuadrado. Se trata de conseguir re- 
llenar el cuadrado con el mayor nú- 
mero de fichas nuestras posible, 
pero para esto debemos de conocer 
las reglas del OThelo. Conseguire- 
mos "comer" las fichas de nuestro 
adversario siempre que coloquemos 
dos de nuestras fichas a los laterales 
de las suyas (que pueden ser una o 
varias). Las posiciones de nuestras 
fichas, bien vertical, horizontal o dia- 
gonal a las fichas de nuestro adver- 
sario. 

Se nos avisará de que estas fi- 
chas han sido comidas porque cam- 
biarán al color de nuestras fichas y 
también porque se verá reflejado en 
los marcadores. 

Colocaremos las fichas en la ca- 
silla que queremos pulsando primero 
la letra de la columna y después el 
número de la fila. 

La característica del juego le harán 
pasar a un estado de gran concen- 
tración y a la vez de diversión. 

Es un juego creado especialmen- 
te para los "amantes del OThelo" 




ra disponer el mejor estratega del 
mundo. 

Realizará un segundo estudio so- 
bre nuestras características en lo 
concerniente al juego, bien, si hemos 
jugado muchas veces, es la primera 
vez o si somos unos expertos dignos 
de mención en el OThelo. 

Se presentarán nueve opciones 
que medirán nuestros conocimien- 
tos, estos irán desde el nivel: 

1 o Muy excepcional, hasta ... 
9 o Excepcional. 

Deberemos saber cuales son 



pantalla por "blancas" (que serán las 
nuestras siempre que juguemos con- 
tra el ordenador) y "negras", con las 
que jugará bien el ordenador o bien 
nuestro compañero, pero al fin y al 
cabo nuestro adversario. 

Si nuestro nivel de juego, es el 
normal, tendremos el mismo número 
de fichas que nuestro adversario, si 
nos encontramos por debajo del ni- 
vel normal, nos dará unas fichas de 
ayuda y si ocurre el caso contrario, 
que estemos por encima del nivel 



pero a su vez deja cabida a todas las 
personas que quieren iniciarse en 
este ingenioso y entretenido juego. 



Puntuación: 
Presentación: 8 
Claridad: 9 
Rapidez: 8 



18 MSX 



LIBROS EN CASTELLANO PARA TU ORDENADOR 

ZX Spectrum y QL 




ríCCWMAíiCO 

con AMSTRAQ 



'Manual de Referencia 
Basle del Program. 

AMSTRAD. 

La mas autorizada y 
completa guia para 
programar en 
Locomotive Basle 
3.400 - Pts 



'Sensacionales 
Juegos AMSTRAD 

Listados completos 
de 27 estupendos 
juegos de muy 
diversos estilos 
1 950 - PtS. 



' Programando con 
AMSTRAD 

Fundamental para el 
usuario principiante 
Ameno y repleto 
de ejemplos 
2.400 - PtS. 



recreo M JvQiiW 

PRINCIPIANTES 
CON \MSTR\0 















•40 Juegos Educativos 
AMSTRAD. 

Listados completos 
(matemáticas, 
geografía, música, 
etcétera) para aprender 
divirtiéndose. 
1.950 - PtS. 



'Lenguaje Máquina... 
AMSTRAD. 

ideal para iniciarse 
en el código 
máquina del 780 
Y EN EL SISTEMA 
OPERATIVO DEL AMSTRAD 
2.100 - PtS. 




•interferencia 
Artificial 

AMSTRAD. 

Convierta su 
AMSTRAD en un 
compañero 
inteligente 
1.500 - PtS. 



v Manidos 

r fJn 

: .m%1r,id 
> f + 



•Sonidos y Música 

AMSTRAD 

Programe música v 
efectos sonoros v 
convierta su 
amstrad en un 
sintetizador 
1.200 - Pts. 



•Programación Básica 
spectravldeo. 

imprescindible para 
iniciarse en el 
dominio de las 
estructuras 

fundamentales del Basic 
1.800 - Pts. 




•Programación Avanzada 
SPECTRAVIDEO 

Para saber más 
ficheros, subrutlnas. 
gestión de errores, 
funciones definibles, 
etcétera 
2.400 - PtS. 




'Código Maquina 
SPECTRUM 

Las instrucciones 

fundamentales 

del Z80 para iniciarse 

en el código 

maquina 

2 100 - PtS 



•Los 20 mejores 
programas. 

Selección de 
excelentes 
programas en Basic 
1 800 - Pts 



• Programación 
avanzada 

Subrutmas. trucos y 
análisis para mejorar 
tus programas 
2.200 - Pts 



I | «O* J'«»?3 I 

H 3/jft»/i rtmm ? " I 



•Las 40 mejores 

SUBRUTINAS 

Las más útiles rutinas 
en código máquina 
reunidas en un solo 
volumen 
1 950 - Pts. 



• Programando 

con OL. 

Texto introductorio 
claro, útil v ameno 
1.950 - Pts. 




IAN SINCLAIR 
PROGR AMANDO 
CON El 
MSXBASC 




*0L Superbaslc. 

Un curso avanzado 
para dominar el 
excelente Basic de tu 

OL 

1.950 -Pts 



•Programando con 
msx Basle 

Curso completo y 
detallado con 
numerosos 
ejemplos prácticos 
2 200 PtS 



•El libro de juegos 
MSX 

Listados completos v 
comprobados de 
21 excelentes 
luegos 

1 900 - PtS 



inúBHSznmp 

PUBLICACIONES 

Avda. del Mediterráneo, 9 

TelS. 4334548-4334876 
28007 MADRID 

Delegación en Cataluña: 
Tarragona, 110 - Tel. 325 10 58 

08015 BARCELONA 

DE VENTA EN SlOrteJn^t»^ 

Y TIENDAS ESPECIALIZADAS 

Marca registrada por el Grupo indescomp 



Comparativa entre los 

ordenadores 




Cada ordenador personal tiene sus defensores 
y sus detractores. Características que a unos 
gustan, pueden no ser del agrado de otros. Es 
lógico y normal que cada usuario defienda a su 
ordenador personal con uñas y dientes, 
basándose en criterios a veces nada 
convincentes. 

Expondremos las características del BASIC MSX, 
a la vez que lo comparamos con el lenguaje de 
los ordenadores más populares del mercado, 
que como ya supondréis son el ZX Spectrum y 
el Commodore 64. 



Q 



uien no ha oído hablar del ZX 
| Spectrum o del Commodore 
64? En el creciente mercado 
español, se han introducido 
múltiples ordenadores personales, al- 
gunos con mejor suerte que otros. 
Todos ellos tienen sus seguidores 
particulares, aunque muchos de los 
cuales lo compraron por ser la nove- 
dad del momento. 

Pero el tiempo paso y el ordenador 
personal se está convirtiendo no sólo 
en el compañero ideal para los ratos 
de ocio, sino también en ayuda im- 
prescindible en el hogar. Ya no se 
matan marcianos intergalácticos, ni 
comecocos, ni bichos parecidos, 
también podemos escribir artículos o 



20 MSX 



BASICS de los 
más populares 




cartas con un tratamiento de textos, 
llevar una agenda completa o incluso 
la contabilidad de la casa. Todos es- 
tos aspectos son los que caracteri- 
zan a esos ordenadores, personales, 
es decir, la posibilidad de tener una 
máquina completa y versátil, y fácil 
de programar. 

En lo que respecta a la versatilidad 
de los ordenadores, nadie dudaría si 
dijésemos que son capaces de reali- 
zar las taréas más inverosímiles, por 
muy difícil que ésta sea. Ahora bien, 
en el tema de la programación la 
cosa cambia. 

Comprar el MSX, ZX Spectrum (en 
el artículo, haremos referencia siem- 
pre al Spectrum de 48 K, aunque sea 



igual que el de 16 K) y Commodore 
64, y dar una opinión a favor de tal o 
cual ordenador no es nuestro menes- 
ter. Destacaremos las particularida- 
des de las instrucciones de cada or- 
denador y dejaremos que sea usted, 
lector, quién dé la última opinión. 

Además, esperamos que este ar- 
tículo le sirva para discurrir, con sóli- 
dos argumentos, la necesidad de 
que sus amigos se compren un 
MSX. 

El BASIC es un lenguaje de pro- 
gramación que está al alcance de 
todos. Como es lógico, la dedicación 
es la mejor manera de obtener la ex- 
periencia y los resultados necesarios 



que nos permita utilizar el ordenar 
hasta el límite de sus posibilidades. 

La facilidad con que unos apren- 
den antes que otros, a veces no es 
cuestión de dedicación, sino de los 
complicado que puede ser o no la 
programación en el ordenador. 

Aquí topamos con el primer incon- 
veniente. Así como en el Zx Spec- 
trum y en el MSX, los comandos e 
instrucciones son fáciles y sencillas 
de realizar, en el Commodore pode- 
mos comprobar lo complicado de tal 
operación. Pero no entraremos en de- 
talles y explicaremos más las diferen- 
cias existentes entre los distintos ti- 
pos de BASIC que presentan. 

Los comandos básicos, que se 



MSX 21 



FOTO 1: 

Los tres ordenadores más populares enfrentados en un examen 



I 



pueden hallar en los tres ordenado- 
res, son los siguientes: 

— IMPUT 

— GOTO 

— PRINT 

— READ 

— DATA 

— RESTORE 

— GO SUB 

— FOR...TO...NEXT...STEP 

— RETRUM 

Existen más comandos, pero los 
que están implementados en uno no 
lo está en el otro, por lo que veremos 



estos casos aislados a continuación. 
Además, cada fabricantes ha dotado 
a su ordenador con unas característi- 
cas y posibilidades que el resto no 
tiene. 

Pero nuestra lista de comandos, 
por el momento, está vacía. Sólo 
contiene aquellas instrucciones que 
podemos encontrar, en estos y otros 
ordenadores más. 

Veamos pues, cuales son las ins- 
trucciones que tienen una función simi- 
lar en unas máquinas y otras. Dividi- 
remos este estudio en apartados, 
siendo la primera sección la dedica- 



da a las instrucciones de Entrada/ 
Salida de datos. 

Pero antes de entrar a comentar la 
materia, haremos una aclaración. El 
ZX Spectrum tiene el interface que le 
permite crear ficheros secuenciales. 
Este caso no se ha considerado, por 
dos motivos; el primero de ellos es 
que la mayoría de los usuarios no po- 
seen dichos interface y segundo, 
esas instruciones como OPEN , 
CLOSE , etc, funcionana si y sólo si, 
se ha conectado el interface I al or- 
denador. Si se aplica directamente 
veremos el mensaje de error corres- 
podiente. 



22 MSX 




De los lenguajes de 
programación BASIC, 
vistos hasta ahora, el 
del MSX, viene a ser 
la opción más 
completa y sencilla de 
las que hay. 




Instrucciones de Entrada/ 
Salida 

Para el manejo del cassette, nos 
encontramos con un buen repertorio 
en cualquiera de los ordenadores. 
Aunque el MSX se lleve la palma ya 
que incorpora un completo juego de 
instrucciones tales como: 
CSAVE, CVLOAD, CLOAD?, BSAVE, 
BLOAD, OPEN, "CAS:" PRINT e IM- 
PUT . etc, para gestionar la entrada 
y salida de datos de dicho periféri- 
co. 

Las instrucciones CLOAD y CSA- 
VE, equivalen a las instrucciones 
LOAD y SAVE del Spectrum y Com- 
modore, mientras que CLOAD?, 
equivale a la instrucción VERIFY. El 
Spectrum no dispone de las instruc- 
ciones OPEN PRINT , e IMPUT , para 
el manejo del cassette. Estas en 
cambio, si están en el Commodore 
64. 

Siguiendo con los soportes mag- 
néticos, entraríamos a comentar las 
instrucciones que controlan el dis- 
kette. En este caso, nos encontra- 
mos con que el Commodore y el 
MSX, pueden manejar la unidad de 
diskette directamente. En el primer 
caso, al final de la instrucción SAVE o 
LOAD, se indica, mediante un núme- 
ro, si la operación la vamos a realizar 
en cassette o en diskette, mientras 
que en el segundo caso, basta con 
indicar la instrucción SAVE o LOAD. 
El Spectrum no posee instrucciones 
para controlar diskettes, aunque el 
mercado ofrezca unidades como op- 
ción adicional al cassette, ya que 
aquel anula totalmente la posibilidad 
de contar con el microdrive. 

En orden de importancia, veamos 
a continuación las instrucciones que 
manejan la impresora. Aquí, tanto el 
Spectrum como el MSX, tienen incor- 
porado las instrucciones LPRINT y 



FOTO 2: 

MSX, con su BASIC de Microsoft, es de 
los que mejor futuro puede esperar. 



FOTO 3: 

El Commodore, posee uno de los 
BASICs más complicados y difíciles de 
entender. 




MSX 23 



Listado 1 



LLIST, para listar parte o totalidad der 
un programa. Además el Spectrum 
tiene el comando COPY, que permite 
obtener una copia de pantalla por im- 
presora. Este comando no lo tienen 
el MSX ni el Commodore, lo que sig- 
nifica que para copiar de pantalla, es 
necesario realizar una rutina en códi- 
go máquina y aplicarla. 

Para leer información del teclado, 
cada ordenador tiene una instruc- 
ción. En el MSX y Spectrum, esta es 
INKEY , mientras que en el Commo- 
dore 64, la instrucción es GET. En 
todos, realiza la misma función, lee el 
teclado para comprobar si se ha pul- 
sado una tecla. 

En lo que se refiere a instrucciones 
que controlen directamente los joys- 
ticks, podemos decir, que el MSX 
aventaja a todos sus competidores. 
Ninguno de los ordenadores en 
cuestión tiene instrucciones BASIC, 
que permitan tener un control total y 
absoluto del joysticks. Entre las di- 
versas instrucciones que se ofrece, 
podemos destacar instrucciones del 
tipo: 

STICK, ON STRIG GOSUB, SRIG, 
etc. Con ellas se pueden conocer el 
estado de los joysticks y si se ha pul- 
sado el botón de disparo. En el Com- 
modore, esta operación se realiza 
mediante POKEs y el Spectrum care- 
ce de toda instrucción (además del 
port de joysticks que permite un con- 
trol de estos periféricos). 

Por último, en este apartado, vere- 
mos las instrucciones que hay en 
cuanto a programación se refiere. 

Entre el grupo de comandos de 
entrada/salida que hay, los tres orde- 
nadores incorporan las instrucciones 
INPUT y PRINT, lo que permiten una 
comunicación directa ordenador- 
usuario. Pero además de ellas, el 
MSX y spectrum, añaden a la opción 
INPUT otra variante, LINE, que com- 
pleta el juego de posibilidades. Aun- 
que si quiere más, el MSX implemen- 
ta la opción USING en el comando 
PRINT que le permitirá formatear los 
datos de salida. 

Lógicamente y debido al tiempo 
que llevan el Commodore y el Spec- 
trum en el mercado, han ido apare- 
ciendo periféricos adicionales que 



1800 REM PRUEBR 1 

1010 PRINT M P M 

1020 FOR K>0 TO 1000 

1030 NEXT K 

1040 PRINT "F" 

1030 END 



Listado 2 



1000 REM Prueba 2 

1010 PRINT M P" 

1020 K«0 

1030 K«K+1 

1040 IF K<1000 THEN 1030 

1050 PRINT "F M 

1060 END 



Listado 3 



1000 REM Pru#b* 3 

1010 PRINT"P M 

1020 K>0 

1030 K=K+1 

1040 fi«< K/K )*K+K-K 

1050 IF K<1000 THEN 1030 

1060 PRINT "f" 

1070 END 



Listado 4 



1000 REM Pru#bj. 4 

1010 PRINT M P" 

1020 K>0 

1030 K-K+l 

1040 R-< K/2 )*3+5-5 

1050 IF K<1000 THEN 1830 

1060 PRINT "f" 

1070 END 



Listado 5 



1000 REM Prueba S 

1010 PRINT M P M 

1020 K-0 

1030 IOK+1 

1040 R-< K/2 >*3+ 4-5 

1050 GOSUB 1090 

1060 IF KX1000 THEN 1038 

1070 PRINT "f " 

1080 END 

1090 RETURN 



van complementando el ordenador. 
Así podemos ver como el Interface I 
es la mejor opción a la hora de terfllr 
información accesible y en un tiempo 
nada despreciable, mientras que el 
Interface II, pemite conectar cartu- 
chos ROM dos joysticks al ordena- 
dor. Pero esto, al no ser parte del 
ordenador no entra en este estudio. 

Pasemos a continuación a las ins- 
trucciones de control gráfico. 

Instrucciones de control 
gráfico 

Sin lugar a dudas, hemos llegado 
a la parte más curiosa e interesante 
de las que hay. 

La gestión de gráficos es posible 
gracias a que tanto el MSX como el 
Commodore, utilizan un controlador 
de video, que se encarga de gestio- 
nar la pantalla. 

t En el Commodore, no existen ins- 
trucciones gráficas propiamente di- 
chas, ya que todo lo relacionado con 
gráficos, incluido lo referente al ma- 
nejo de 8 sprites, se realiza mediante 
los 47 registros del controlador de vi- 
deo, accediéndo a ellos mediane el 
comando POKE. 

En el BASIC MSX, podremos en- 
contrar numeosos comandos para la 
realización, creación y manejo de 
sprites, y varios modos de pantalla, 
cosa que no tiene ninguo de los or- 
denadores en cuestión. 

Veamos como son las instruccio- 
nes del MSX, que permiten semejan- 
te control. 

Podemos comenzar con PSET (x, 
y), c. Este pone el punto especifica- 
do a un color determinado. En el 
Spectrum, equivale a la instrucción 
PLOT. Luego tenemos la instrucción 
PRESET (x, y),c, que restituye el co- 
lor de un punto. DRAW y LINE trazan 
líneas pero con la segunda opción se 
pueden dibujar cuadrados y rectán- 
gulos, con la posibilidad de poderlos 
colorear por dentro. Para dibujar ar- 
cos, círculos y elipses, hay un co- 
mando que lo hace directamente. 
CIRCLE (x, y(, r, c, ai, af, fe dibujará 
un círculo con las coordenadas x, y 
en el centro, donde r es el radio (en 



24 MSX 



radianes), c es el color, ai y af el án- 
gulo inicial y final, respectivamente y 
fe es la relación existente entre el eje 

x e y. 

El Spectrum posee esta instruc- 
ción pero con el formato algo menos 
compleo, CIRCLE (x, y), c, dibuja un 
círculo con el centro en las coorde- 
nadas x, y, con rádio c (en radianes). 

También existen algunas, de estas 
instrucciones en el BASIC del Spec- 
trum, aunque éste no disponga de 
un chip de video lo que empobrece 
la resolución gráfica, algunas de las 
cuales son: 

■ — PLOT 

— DRAW 

. — CIRCLE 

— BORDER, INK, PAPER 

— FLAH 

— INVERSE 

— OVER 

— POINT 

— ATTR 

Como se puede comprobar, casi 
todos estos comandos tienen su 
equivalente en el MSX. Podríamos 
destacar, por ejemplo, que las ins- 
trucciones del Spectrum BORDER 
INK, PAPER, en el MSX, equivalen a 
COLOR i, j, k. Sin embargo, el MSX 
no posee las instrucciones INVERSE 
FLAHS y OVER. 

El Commodore no tiene comandos 
directos y realiza todas las operacio- 
nes de control gráfico, tanto de crea- 
ción como de manejo, mediante los 
consabidos POKERS a las posicio- 
nes de la memoria expresamente 



(tW HA OeSADo^ 
\AQOl IST05 8AS/CS? 



Listado 6 



6 



1000 REM Prueba 
1010 PRINT"P" 

1020 K>0 

1021 DIM PK3) 
1030 Din M<5) 
1040 K«K+1 

1050 R«< K/2 )*3+ 4-5 

1051 FOR L-l TO 5 

1052 NEXT L 
1060 GOSUB 1120 
1070 FOR L-l TO 5 
1080 NEXT L 
1090 IF K<1000 THEN 1030 
1100 PRINT M f 1 
1110 END 
1120 RETURN 



Listado 7 



1000 REM Pruébi 1 
1010 PRINT"P n 

1020 K-0 

1021 DIM M<5) 
1030 DIM M(5> 
1040 K«K«M 

1050 R*< K/2 )#3+4-S 

1051 FOR L»l TO 5 

1052 NEXT L 
1060 GOSUB 1130 
1070 FOR L*l TO 5 
1080 M(L)«R 

1090 NEXT L 

1100 IF K<1000 THEN 1030 
1110 PRINT "f 
1120 END 
1130 RETURN 




J 



preparadas para ello. 

Sin embargo, en el MSX, también 
se puede acceder a la memoria de 
video y controlar desde allíi la crea- 
ción de gráficos y sprites. Esto se 
hace gracias a instrucciones expre- 
samente creadas para ello. 
VPOKE y VPEEK, son dos ejemplos 
claros de acceso directo a cualquier 
parte de los 16 K de memoria video 
que tienen todos los MSX. 

No todo está escrito sobre los co- 
mandos gráficos del MSX, ya que to- 
davía faltan los subcomandos que 
utlizados con la instrución DRAW, 
permiten dibujar en cualquier sentido 
y en cualquier posición. 

En realidad, este punto es el más 
fuerte de los MSX haciéndolos insu- 
perables en este terreno, aunque 
también tiene otro frente bastante 
importante y muy completo a la hora 
de programar; la creación de soni- 
dos. 



Instrucciones de sonido 

Viendo las características del MSX 
en el apartado de gráficos, uno po- 
dría pensar que aquí se acaba la his- 
toria, cuando en realidad es su inicio. 

Siendo el único que, junto con el 
Commodore 64, posee un chip para 
la generación de sonido. Ambos 
chip son polifónicos (3 voces), dis- 
poniendo el MSX de 8 octavas, mien- 
tras que el Commodore tiene 9. Pero 
de nuevo, la potencia del BASIC 
MSX, se hace notar. ¿Resultado? 

Crear sonidos en el MSX es taréa 



TABLA COMPARATIVA ENTRE LOS ORDENADORES MAS EXTENDIDOS 







MSX 


SPECTRUM 


COMMODORE 


LISTñC'O 
LISTRDO 
LISTADO 
LISTADO 
LISTADO 
LISTADO 
LISTADO 
LISTADO 


1 

2 
3 
4 
5 
6 
7 
8 


2-23 
6.01 
17.45 
18.54 
19.73 
32. 12 
45. 15 
1.41 


4.73 
8.57 
20. 98 
29. 15 
23.93 
54.29 
78.91 
1 . 37 


1.69 . 

9.80 
18é'4ÉJ 
20.30 
22.01 
32.61 
51.22 

0.90 



MSX 7R 




FOTO 4: 

ZX Spectrum. una filosofía aplicada por 
Sir Clive Sinclair al mundo del ordenador 
personal. 



FOTO 5: 

Vista posterior del Commodore 64. Las 
conexiones no son estándar, por lo que 
es necesario utilizar periféricos 
destinados solamente para este 
ordenador. 



bastante más sencilla de lo que uno 
puede imaginar, mientrar que el 
Commodore 64, obligará al usuario a 
estudiar los contenidos de la memo- 
ria y a usar innumerables instruccio- 
nes POKE, que es la única manera 
de controlar el chip de sonido. 

El Spectrum no tiene tal chip, sólo 
cuenta con una instrucción BEEP con 
dos parámetros que controlan la 
nota y la duración, esto hace prácti- 
camente inexistente la posibilidad de 
generar sonidos en el Spectrum. 

Veamos el comportamiento de es- 
tas instrucciones. 

BEEP, genera en el MSX un leve 
chasquido, mientras que en el Spec- 



MSX, Commodore 64 y 
ZX Spectrum, tres 
ordenadores, tres 
visiones distintas del 
ordenador personal. 



trum, utilizando las coordenadas ne- 
cesarias, como la duración y la nota, 
puede llegar a crear algo de sonido. 
PLAY, se usa para tocar música. Ve 
precedida por una serie de subco- 
mandos que indican las notas a to- 
car las características del sonido, 
como pueden ser ritmo, volumen y la 
octava. 

Los subcomandos usados en esta 
instrucción son: 

C = DO D = RE E = MI F=FA G=SOL 
A = LA B = SI 

V — va precedido de un número en- 
tre 0 y 15, sirve para especificar el 
volumen de la nota. 
O — va precedido de un número en- 
tre 0 y 8, especifica la octava de las 
notas a tocar. 

R — genera una pausa en la genera- 
ción de sonidos. 

T — seguido de un número especifi- 
ca la velocidad de efecución de la 
secuencia de notas. 
,S — especifica la forma de la onda. 
M — especifica el período de envol- 
vente. 

De cualquier manera, para com- 
pletar este apartado resaltaríamos la 
necesidad de leer el artículo publica- 




/ 1 WiZM HA DEJADO 

\áaui asros 8A5/csp 



ZX y Commodore 
abriéron las puertas y 
los ojos de aquellos 
que implantaron y 
vieron la necesidad de 
establecer una 
estandarización en los 
ordenadores 
personales. 




do en el número 2 de MSX, denomi- 
nado Generación de Sonidos, donde 
se explica con todo lujo de detalles, 
las innumerables posibilidades exis- 
tentes en la realización de sonidos. 

Acabando el tema podemos ver 
una de las características más impor- 
tantes del MSX; la posibilidad de ma- 
nejar interrupciones, algo típico en 
ordenadores de más nivel. 

Manejo de interruptores 

El MSX dispoe de una serie de ins- 
trucciones para el manejo y control 
de interruptores; éstas se pueden 
producir de múltiples maneras: 
1 . Interrupciones por error. 

Se producen cuando se genera un 
error en el programa: normalmente 
devuelven el control al intérprete BA- 
SIC pero se pueden controlar me- 
diante una subrutina habilitada para 
tal fin dentro del mismo programa. 
Este se puede realizar con la instruc- 
ción: 

IN ERRO GOTO xxxx, que producirá 
un salto a la línea xxxx que deberá 
finalizar con la instrucción RESUME. 



Listado 8 

1080 REM Prueba 8 
1010 PRINT"P" 

1020 K*0 

1021 DIM M<5> 
1030 DIM M<5) 
1040 K-K*2 

1050 B«LOG <K> 

1051 FOR L-l TÜ 5 

1052 NEXT L 
1060 OSIN(K) 

1070 IF K<1000 THEN 
1080 PRINT "f " 
1090 END 



1030 




FOTO 6: 

Vista posterior ZX Spectrum. Los 
interlaces son una constante en el 
desarrollo de aparatos y periféricos para 
el ordenador. 



Foto 7: Conectores universales que 
potencian un standard. 





2. Interrupciones producidas por 
las teclas de función. 

Se produce cuando se pulsa una 
de las teclas de función. El control 
de estas interrupciones se realiza 
mediante la intrucción: 

ON KEY GOSUB x1, x2, x3 que 

saltará a la subrutina en función de la 
tecla que se hala pulsando. Esta inte- 
rrupción se puede habilitar o no con 
el comando KEY ON/OFF. 

3. Interrupciones por la pulsación 
de la barra espaciadora o alguno de 
los disparadores de un joysticks. 

Se controlan mediante la instruc- 
ción: 

ON STRIG GOSUB y se habilita o no 
con el comando STRIG ON/OFF. 

4. Interrupciones por la pulsación 
simultánea de las teclas CTRL y 
STOP. 

Estas se controlan mediante la ins- 
trucción ON STOP GOSUB, se habili- 
ta mediante el comando STOP ON. 
Es muy útil para evitar la detención 
de un programa y de esa forma pro- 
tegerlo. 

5. Interrupciones del temporizador. 
Son las que se producen cada 

cierto tiempo. Estas entran en funcio- 
namiento mediante la instrucción: 
ON INTERVAL - tiempo GOSUB y se 



En la realización del 
potente BASIC del 
MSX, se nota la mano 
de una importante 
compañía: Microsoft. 



habilitan mediante el comando IN- 
TERVAL ON. 

Conclusiones 

Varios son los puntos a destacar 
de esta pequeña comparativa. En 
primer lugar, se realizó en base al or- 
denador solamente y al lenguaje que 
éste posee sale de fábrica. Como 
mencionábamos anteriormente, de- 
bido a que el ZX Spectrum y el Com- 
modore, llevan más tiempo en el 
mercado, indudablemente tienen el 
software más diverso y completo 
que hay en la actualidad, hay desde 
el típico juego de marcianos hasta 
una aplicación del BASIC, sin contar 
con los diversos lenguajes de pro- 
gramación que cuentan, además del 
BASIC. 

Segundo, la creciente ola de peri- 
féricos y la mejora en que se han vis- 
to las diversas casas comerciales al 
aparecer el MSX con todos los ali- 
cientes de un ordenador grande, ha 
obligado a crear desde unidades de 



diskettes hasta controladores do- 
mésticos. 

Ninguno de éstos, ha sido objeto 
de estudio y creemos conveniente, 
por esta razón, continuar en algún 
número futuro la comparativa entre 
estos ordenadores ampliados hasta 
el límite de sus posibilidades. 

Para finalizar, destacar que tampo- 
co se ha entrado en características 
de los distintos lenguajes, debido a 
que se podrían escribir ríos sobre to- 
dos y cada uno de ellos. Esperemos, 
pues, que estas pequeñas indicacio- 
nes hallan servido para asentar y di- 
ferenciar las características esencia- 
les del lenguaje de programación de 
cada ordenador. No hemos entrado 
ni en las interioridades de cada uno, 
ni en los mapas de memoria, por 
considerarlo ajeno a lo que deseába- 
mos explicar. 

De cualquier manera, hemos reali- 
zado una prueba para comprobar la 
velocidad de ejecución de los distin- 
tos BASIC, y aunque sólo sea orien- 
tativo, el cuadro muestra los tiempos 
obtenidos en la ejecución de los dife- 
rentes programas. Estos también se 
exponen, por si algún lector desea 
realizar la comparación con amigos 
que tenga cualquier otro ordenador 
personal. 



fiooieH HA DEJADO 
\AQO\ íSroS 3AS/C5? 





PARTIC 
NUESTRO 
CONCURSO 




partir del próximo número MS#6*¿? 
premiará mensualmente los programas/"' 
hagan llegar los lectores. 

D 

I ara participar en este concurso 'kM 
abierto, todo aficionado a los ordénale! 
con este estándar deberá hacer MegaV a? 
redacción de la revista el listado, un^ 
cassette y un texto explicativo. 

Entre todos los programas c 
recibamos cada mes, serán sele^ciojj&do^ 
para su publicación aquellos guej 
los siguientes criterios: / 

— Originalidad de la aplicad 

— Simplicidad del método de 
programación. 

La única condición para participar 
el concurso será que los programas no 
hayan sido publicados previamente en 
ninguna revista. 





A \ unque nunca se haya para 
do a pensar en ello, en mu- 
chos programas habrá visto 
figuras (naves, coches, pájaros, 
bombas,...) que se mueven en la 
pantalla, que pueden pararse, acele- 
rar, desaparecer, que combinándo- 
las se consigue que haya acción en 
la pantalla, que haya una auténtica 
película de dibujos animados. 

Estas figuras no se trazan con las 
órdenes de gráficos (CIRCLE, 
DRAW, LINE, PSET Y PRESEY). Fun- 
cionan independientemente de los 
comandos gráficos, y tanto es así, 
que también pude haber figuras mó- 
viles en el modo de textos SCREEN 
1 , donde no puedes utilizar esas cin- 
co órdenes. Estas figuras son los 
"sprites", y vamos a contaros todo 
sobre ellas. 



¿Qué es un Sprité? 

Un sprite es un figura móvil mo- vX;X;X 

nocroma que se puede desplazar /XvXO 
por la pantalla por encima de todo lo 

que haya escrito o dibujado. Nada X;X;X>; 
puede aparecer escrito o dibujado 

sobre un sprite, más que otro sprite. •§•$•$•! 
Vamos a examinar esto más deteni- 

damente. £§i$i$ 

Lo que vea en su televisor o en su ¿•¿♦r**' 
monitor como la pantalla del ordena- 
dor, no es más que la superposición 
de 33 planos de dibjos distintos. El 
último de esos planos paralelos, el 
que se halla más al fondo de la pan- 
talla, es el plano principal, el plano xx-XvX-; 
donde se desarrollan los textos y los 
gráficos. Los otros 32 planos de di- 
bujos se hallan tapando a este plano X-X-X-X; 
principal, y su función es exclusivas- 
mente dibujar figuras móviles. Están v:'x-X;X 




D 




SPRITES 

MSX: 

DIBUJOS 
ANIMADOS 
EN TU 

ORDENADOR 



Una de las muchas ventajas que posee la norma 
MSX en comparación con otros ordenadores es 
la de disponer de figuras móviles, de "sprites". 
En este artículo explicaremos como poder crear 
y mover sus propios Sprites desde el BASIC MSX 



numerados del 0 a 31, siendo el pla- 
no número 0 el más lejano al plano 
principal, y el más cercano al obser- 
vador, y el plano número 31 , el plano 
contiguo al plano principal, y el más 
lejano al observador. Por eso, una 
figura móvil dibujada en el plano 0 
tapará todas las figuras móviles y to- 
dos los dibujos y letras que hubiera 
en los p/xe/s que ella ocupa, pues 



este plano está tapando a todos los 
demás Una figura móvil dibujada en 
el plano 1 tapará todo lo que ocupe 
sus mismos p/xe/s y éste dibujado en 
planos inferiores, como el 2, el 
3,... hasta el plano 31 y también el 
plano principal, pero podrá ser tapa- 
da a su vez por una figura móvil del 
plano 0. Las figuras móviles del pla- 
no 2 podrán ser tapadas por las de 



los planos 0 y 1 , pero taparán a su 
vez a las de los planos 3, 4, 5,... 31 
y plano principal, y en esta sucesión 
podríamos seguir hasta el plano 31 , 
cuyas figuras móviles pueden ser ta- 
padas por todas las figuras móviles 
de los planos 0 al 30, pero pueden 
tapar los gráficos y letras del plano 
principal, los cuales, al estar en el úti- 
mo plano, pueden ser tapados por 
todas las figuras móviles que se di- 
bujan en los planos 0 al 31. 



Tipos de Sprites 



No todas las figuras móviles pue- 
den ocupar la misma cantidad de p/- 
xe/s. Según esta cantidad, podemos 
distinguir cuatro tipos de figuras móvi 
les: 



TIPO 0: figuras móviles de 8 fi- 
las x 8 columnas de p/xe/s 
TIPO 1 : figuras móviles de 8 fi- 
las x 8 columnas de "p/xe/s 
ampliados" 

TIPO 2: figuras móviles de 16 
filas x 1 6 columnas de p/xe/s 
TIPO 3: figuras móviles de 16 
filas x 1 6 columnas de "p/xe/s 
ampliados" 



Estos tipos son imcompatibles, es 
decir, no pueden salir a la pantalla 
figuras móviles de un tipo y de otro 
tipo al mismo tiempo. Para acceder a 
un tipo concreto de figura móvil, se 
utiliza el segundo dato de la orden 
SCREEN. Por ejemplo si queremos 
obtener sprites de tipo 2 en SCREEN 
1 , habrá que teclear SCREEN 1 , 2. 

.Los "p/xe/s ampliados" son blo- 
ques de 4 p/xe/s (2 filas x 2 colum- 
nas) que en el tipo 1 y en el tipo 3 se 



I l l ll l I I IIIJIMI I II lililí l i li I lili I I I I ' 

■ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■lililí iLL 



MSX 31 



utilizan como si fueran píxels. Por lo 
tanto, para un figura móvil del tipol 
se suministran los datos como si fue- 
ra de 8 x 8 píxels aunque en realidad 
sea de 16 x 16, y en realidad es de 
32 x 32. 

Una aplicación de estos "píxels 
ampliados" puede ser, por ejemplo, 
cuando tenga que hacer una explo- 
sión, hacerla primero en el tipo 0, 
después en el tipo 2 y por último en 
el tipo 3 (con "píxels ampliados") con 
los cual se conseguirá la impresión 
de que la nube de la explosión ha ido 
aumentando. Esto no es otra cosa 
que una más de la inmensa cantidad 
de aplicaciones de los "píxels am- 
pliados" que ya irá descubriendo a 
medida que practique con sus figu- 
ras móviles. 



I coloreados como "1" y los transpa- 
rentes como "0". A continuación, 
convienen pasar estos datos al siste- 
ma numérico hexadecimal, o de 
base 16: 

& B00000000=&H0 
& B00000000=&H0 
& B00100010=&H22 
& B01010101=&H55 
& B10001000=&H88 
& B00001000=&H8 
& B00000000=&H0 
& B00000000=&H0 

Para definir un sprite desde BA- 
SIC, hay que utilizar el mando SPRI- 
TE$. Tras la palabra SPRIT$ hay que 
indicar entre paréntesis el número de 
I figura móvil a que se refiere. Como el 
ordenador puede acordarse de hasta 



Definiendo Sprites 

Vamos a definir una figura móvil; 
por ejemplo, una gaviota. Antes de 
nada habrá que diseñarla (figura 1). 
Hemos elegido el tipo 0 de figuras 
móviles de 8 x 8 píxels, pues es el 
más sencillo de elaborar. 

En el diseño de una figura móvil es 
muy importante recordar queaquel 
color del que vayamos a pintar esta 
figura móvil (sólo uno, los sprites son 
monocromos) sólo afectará a los pí- 
xels que hayamos decidido que 
constituyen la figura móvil, pues el 
resto de los píxels que complen las 8 
filas x 8 columnas, y que aparecen 
en blanco en la figura 1 , en realidad 
las letras o dibujos que se desarrollen 
en estos 8x8 píxels y cuyos píxels 
coincidan con los píxels coloreados 
de la figura móvil aparecerán del co- 
lor de la figura móvil, pero aquellos 
dibujos o letras que estén dentro de 
los 8 x 8 píxels y cuyos píxels coinci- 
dan con los definidos como transpa- 
rentes en la figura móvil aparecerán 
perfectamente. 

Esto se cumple también en cual- 
quier otro tipo de figuras móviles. 

Siguiendo con el diseño de la figu- 
ra 1 , ahora correspondería pasar las 
filas horizontales de 8 píxels al siste- 
ma binario, considerando los píxels 

32 MSX 




I 256 figuras móviles) del tipo 0 y del 
¡ tipo 1 ) las numera de 0 al 255. Así, si 
numeras esta figura móvil como la fi- 
I gura número 0, tendrás que poner: 

SPRITES (0) = CHR$ (&H0) + CHR$ 
(&H0) + CHR$ + 

+ CHR$ (&H55) + CHR$ (&H88) + 
CHR$ (&H0) + CHR$ + CHR$ (&H0) 

Tras el signo "igual", como ya has 
visto, tendrás que poner ocho veces 
la función "CHR$", y entre parentési- 
sis y por orden de arriba a abajo, los 
datos en hexadecimal de las líneas 
horizontales de tu figura móvil (el co- 
lor se detemina después con otra or- 
den). 

Pero de esta manera sólo se pue- 



den definir las figuras móviles del 
tipo 0 y del tipo 1. Para definir las 
figuras móviles de 16 filas x 16 co- 
lumnas, ya sea de píxels o de píxels 
ampliado, hay que dividir esta figura 
móvil en cuanto "subfiguras móviles", 
de 8 filas x 8 columnas, e introducir 
los datos de estas subfiguras según 
el orden indicado en la figura 2. Para 
esta operación necesitarás usar 32 
veces la función CHR$, para introdu- 
cir los datos hexadecimales de las lí- 
neas horizontales de 8 píxels. 

Has de tener en cuenta también 
que la figuras móviles del tipo 2 y del 
tipo 3 ocupan 4 veces más en la me- 
moria que las del tipo 0 y del tipo 1 , 
luego el ordenador no puede guardar 
en su memoia más de 64 giguras 
móviles de 16 filas x 16 columnas, y 
habrá que numerarlas del 0 al 63. 

Para que los mandos SPRITES no 
resulten tan largos, hay varios trucos 
que se pueden emplear. Puede hacer 
en otras órdenes, por ejemplo, que la 
varible A$ sea igual a la suma de las 
ocho funciones CHR$ de la primera 
subfigura, que B$ tenga las ocho de 
la segunda, C$ de la tercera y D$ de 
la cuarta, y así podrás teclear, como 
sprite de las 16 filas x 16 columnas 
con el número 27, por ejemplo: 

SPRITES (27) - A$ + B$ + C$ + D$ 

y tu figura móvil quedará definida. 

También puedes sustituir CHR$ 
por los caracteres entrecomillados 
cuyo código en hexadecimal sea uno 
de los datos. Por ejemplo, al definir 
la gaviota, si sabemos que el carácter 
número 55 hexadecimal, es decir el 
número en decimal e la "U" mayúscu- 
la, podemos teclear: 

SPRITES (0) = CHRS (&H0) + CHR$ 
(&H0) + (&H22) + "IT + CHR$ 
(&H88) + + CHRS (&H8) + CHRS 
(&H0) + CHRS (&H0) 

y la figura móvil definidaseguirá sien- 
do la gaviota, exactamente igual. 

Al utilizar la segunda coordenada 
de la orden SCREEN, te aconseja- 
mos bastante prudencia, pues al selec- 
cionar el tipo de figura móvil que 



FA*T7í)/AT£,<2u£ yo 

TEN&o UkJA fe* MAS 
GWQfK Q\JÍ ¿A-TU/A 





AQOÍ^ANMO 

MALA (DLMEAJA I 

1* voy A enSEÑM 
YO LO ME ES [)Ñ 

mame * 



51 ¿AS PíEPtf^Sj 

flV SA3ÍCJ 



quieres utilizar, al mismo tiempo bo- 
rra de la memoria absolutamente to- 
das las figuras móviles que hubieras 
definido previamente, aunque fueran 
del mismo tipo que has selccionado. 
Esto no sucede, sin embargo, con la 
primera coordenada de la orden 
SCREEN, por lo que puedes cambiar 
de modo de pantalla (de texto a grá- 
fico, de gráficos a texto, de gráficos 
entre sí, e incluso llegar a SCREEN 0, 
el modo de texto en que no se pue- 
den usar figuras móviles) sin temor a 
que tus figuras móviles se borren de 
la memoria. 

Movimiento Sprites 



Para situar tus figuras móviles en 
la pantalla y moverlas a continuación, 
es conveniente que sepas algo más 
sobre los planos de pantalla de los 
que hablábamos antes. 

El plano de dibujo principal se divi- 
de en 192 filas x 256 columnas de 
p/xe/s, numeradas, del 0 al 191 y del 
0 a 255, apareciendo este plano ínte- 
gro en la pantalla, pero no sucede lo 
mismo con los planos de figura mó- 
vil. Los planos de figura móvil se divi- 
den en 256 filas x256 columnas de 
p/xe/s, numeradas ambas del 0 al 255. 



Al caber sólo en la pantalla 192 filas 
de p/xe/s, hay una parte de los pla- 
nos de la figura móvil que no apare- 
cen en la pantalla y que va desde la 
fila 192 hasta la fila 255 de p/xe/s. 
Esta zona se halla oculta en el borde 
inferior de la pantalla. 

Como los p/xe/s de los planos de 
figura móvil se hallan exactamente 
en el mismo lugar que los p/xe/s de 
plano principal (por ejemplo, el píxels 
(27, 49) de cualquier plano de dibujo 
de figuras móviles se superpone a pí- 
xels (27, 49) en cualquier plano infe- 
rior, incluido el plano prinipal. Vamos, 
pues, a situar una figura móvil. 

Si la gaviota que definimos en el 
apartado anterior se mantienen en la- 
memoria de tu ordenador (si no 
vuélvela a definir) podemos situarla 
en la pantalla. Antes de situarla, ten- 
dremos que decidir en qué plano la 
vamos a poner, en que p/xe/s y de 
qué color. Decidimos al azar que la 
situamos en el plano número 3, en el 
cuadrado de p/xe/s con vértices 
(100, 100), (107, 100), (107, 107) y 
de color blanco (15). Para qe se vea, 
pues de color blanco, hay que hacer 
que el color del fondo sea distinto 
color. Azul, por ejemplo. Por lo tanto 
pon tu ordenador en SCREEN 1 y te- 
clea: 



10 color, 4, 4 

20 put sprite 3, (100, 100), 15, 0 

La línea 1 0 establece que el color 
del fondo y de los bordes sea azul, y 
a línea 20, utilizando el mando "PUT 
SPRITE", sitúa la figura móvil tal y 
como habíamos decidido. Tras un 
mandato "PUT SPRITE", hay que indi- 
car el plano donde se sitúa la figura 
móvil, el vértice superior izquierdo 
del cuadrado donde se sitúa, el co- 
lor, y la figura móvil de que se trate 
(la gaviota la numeramos con el spri- 
te número 0). 

Ahora te encontrarás con que tie- 
nes una gaviota en medio de la pan- 
talla y no se puede borrar, ni con 
"BS", ni con "DELETE", ni con la or- 
den "CLS": Pero sí se puede quitar de 
dos maneras: poniéndola transparen- 
te (color 0): 

PUT SPRITE 3, (100, 100), 0, 
0, 

o poniendo otra gaviota en el mismo 
plano de la figura móvil, pero en la 
zona que no aparece en la pantalla, 
como el cuadrado de vértice superior 
(200,0): 

PUT SPRITE 3 (200,0), 15,0 

Te estarás preguntando por qué el 
hecho de poner una gaviota fuera de 
la pantalla ha hecho borrarse a la an- 
terior, cuando lo lógico sería que per- 
maneciesen dibujadas ambas, una 
que no puede verse, fuera de la pan- 
talla, y otra, la de antes en medio de 
la pantalla. La respuesta es fácil, en 
un plano de figura móvil, solo cabe 
una figura móvil La que había en el 
plano 3 era una gaviota en medio de 
la pantalla, pero al decirle al ordena- 
dor que me situará otra en el mismo 
plano, pero fuera de la vista, lo ha 
hecho, pero ha borrado a la gaviota 
anterior, para tener sólo una figura 
móvil. 

Esta caracterítica de los planos de 
figuras móviles limita la cantidad de 
i figuras móviles que puede aparecer 
en un instante de tiempo a 32, una 
por cada plano de figura móvil, aun- 
que haya definidas más de 32 figu- 



MSX 33 








ras móviles en la memoria del orde- 
nador. Esto, lejos de ser una 
desventaja, resulta muy beneficiosos 
para crear el efecto de los dibujos 
animados. Vamos a poner un ejem- 
plo. La gaviota de antes va a ir volan- 
do de un lado a otro de la pantalla. 
Para ello necesitamos las dos posi- 
ciones de la gaviota: la gaviota con 
las alas levantadas y la gaviota con 
las alas bajadas. La primera posición 
ya está definida y la segunda posi- 
ción es la figura 3. Definimos, antes 
de nada, la segunda posición, por 
ejemplo, como la figura móvil núme- 
ro 1: 



& B0000000O 
& B00000000= 
& B00000000= 
& B0001010O 
& B00101010= 
& B01001001= 
& B1 0000000= 
& B00000000= 



&H0 

&H0 

&H0 

&H14 

&H2A 

&H49 

=&H80 

&H0 



luego el programa será, suponiendo 
que siga la otra gaviota en la memo- 
ria el siguiente: 

10 SPRITES$ (1) = CHR$ (&H0) + 

CHRS$ (&H0) + CHR$ (&H14) + 

CHR$ (&H2A) ++CHR$ (&H49) + 

(&H80) + (&H0) 

20 color, 4, 4: SCREEN 2 

30 FORT = 0 TO 100 PUT SPRITE 3 

(100,00), 15, TMOD 2: 

FORL = IT050: NEXT: NEXT 



Este programa solo hace batir las 
alas a la gaviota, sin moverla. Para 
ello pone la figura móvil a instalar en 
función del resto de la división de la 
variable del bucle T entre 2. Hemos 
incluido un buce L ralentizador del 
movimiento de la gaviota. 

Vamos ahora a moverla por la pan- 
talla. Cambia la orden 30 por la si- 
guiente: 

30 FOR T=1TO 200: PUT SPRITE 3, 
(T, 100), 15, T MOD 2: FOR L = 1TO 
50: NEXT: NEXT 

y así verás que ti gaviota se desplaza 
por la pantalla desde el punto (0, 0) 
al (0, 200). 

Te vamos a explicar ahora un fe- 
nómeno que sucede con las figuras, 
móviles, y que en inglés se llama 
"wrap-Around". Cambia el bucle T 
para que, en vez de ser de 1 a 200, 
sea de 1 a 1000 (FORT = 1 
TOL1000) cuando el bucle llega a vaJo 
res como 300, 400.etc...,la gaviota 
sigue aún viéndose. Esto sucede 
porque al llegar al píxels (256,100) el 
ordenador sitúa a Is figuras móviles 
en el (0,100) y parece como si la ga- 
viota comenzará de nuevo a atrave- 
sar la pantalla. Esto también sucede 
en vertical. Cambia la orden 30 por: 

30 FORT = 0 TO 1000: PUT 
SPRITE 3, (100, T) 15, TMOD 
2: FOR L = 1TO50: NEXT: 
NEXT 

y sucederá algo parecido. La diferen- 



cia entre el "Wrop-Around" vertical y 
el horizontal es que en el vertical la 
figura móvil tiene que atravesar la 
zona oculta de su plano antes de lle- 
gar al punto (100, 256) y a causa de 
esto situarse en el punto (100,0). 

Por último te diremos que hay un 
solo inconveniente en la salida a pan- 
talla de los sprítes MSX: no puede 
hacer más de cuatro figuras móviles 
en una misma línea horizontal. Si se 
sitúan 5, sólo se podrán ver las cuatro 
que se hallen en los cuatro planos de 
figura móvil. Así si se hallan figuras 
móviles de los planos 0, 2, 4, 5, 7, 9, 
y 1 1 en la misma línea horizontal, 
solo verán visibles las de los planos 
0, 2, 4, y 5. Si una figura móvil se 
sitúa alineada horizontalmente con 
cuatro o más figuras móviles de pla- 
nos superiores, no se verá, pero si se 
halla al menos 1 píxels por debajo de 
los demás será visible solo en parte, 
de las rebanadas de píxels que se 
hallen desplazadas de las demás. 

J.M. Cavaníllas. 




34 MSX 



SVI-728 MSX-PIUS. 



NO HAY QUIEN DE MAS: 
UN EQUIPOEXCEPCIONAL, 
A UN PRECIO DE EXCEPCION. 

TODOS DE ACUERDO. "MSX": STANDARD MUNDIAL 



COMPATIBLE 

Este sería el primer adjetivo a destacar del ordenador] 
SVI-728 MSX: su total compatibilidad con el sistema 
standard mundial MSX. 




ILIMITADO 

Gracias a la amplia variedad de periféricos 

disponibles (y todos compatibles MSX) el ordenador SVI-728 no tiene límites. Desde la 
unidad de disco al cassette. Desde el cartucho de 80 columnas (para trabajar en 

CP/M junto con un disco) al interface RS 232. 
Y por si fuera poco otra posibilidad más. 
El ordenador SVI-728 MSX es un equipo capaz de 
convertirse en una estación de la red local LAN. 
Todo listo para poder crecer. Y todo disponible ya. 
Sin esperas ni demoras. 




Infórmate en tu Concesionario Autorizado 
Spectra video y comprueba la total 
'modularidad* del sistema SVI-728. 
Nacido para crecer. 



Spectravideo. 
La informática del futuro, hoy. 




SVI 

SPf CTRAVIOf O 



KV1I 



Algebra 





ntes de entrar en definiciones 
y explicaciones, que en lugar 
de facilitar la lectura, la compli- 
carían, iniciemos este artículo con 
una breve historia del padre del álge- 
bra que lleva su apellido. George 
Boole, nacido en 1815, será, sin lu- 
gar a dudas recordado por todos 
los que, de una forma u otra, están 
ligados a la profesión informática, 
gracias a sus teorías y a sus libros, 
ha sido posible entender la complica- 
da lógica aristotélica. Desarrolló una 
serie de símbolos, que utilizados en 
combinación con otros elementos, 
obtenían una serie de resultados. Es- 
tos elementos y símbolos, los vere- 
mos con las instrucciones que posee 
el ordenador. 

Es interesante saber que esta 
rama matemática, es necesaria en- 
tender a la perfección, ya que la 
construcción de instrucciones con el 
formato IF-THEN-ELSE, se verá be- 
neficiado o perjudicado, en base a 
nuestro conocimiento y saber hacer. 

Las tablas de verdad son otra for- 
ma de aplicar estos teoremas y estas 
leyes. Pero empecemos viendo las 
distintas instrucciones que posee el 
MSX y que se utilizan con más o me- 
nos frecuencia. Existen seis opera- 
dores lógicos, que son NOT, AND, 
OR, WOR, EQV e IMP. Los operado- 
res lógicos son elementos, que colo- 
cados entre dos condiciones (o pro- 
posiciones) permiten una respuesta 
del tipo TRUE o FALSE (verdadero 
falso, 1 ó 0, etc.). 

Este tipo de respuesta es debido 
a que el ordenador está formado por 
un conjunto de interrupciones que 
sólo pueden estar encendidos o apa- 
gados. Una combinación de interrup- 
tores es lo que hemos denominado 
en anteriores artículos como bytes (8 
interruptores). La lógica del ordena- 
dor, por lo menos, lo que hace que 
la máquina razone, es este conjunto 
de reglas que conforman el algebra 
de Boole. 

Una vez entendido que el meca- 
nismo interno de la máquina se rige 



por impulsos eléctricos y por unas 
determinadas reglas, vamos a expli- 
car los distintos operadores lógicos y 
sus tablas de verdad. 

En orden de importancia, pode- 
mos destacar los tres operadores 
más comocidos por todos los lecto- 
res. Estos son el OR, AND y NOT 
(que significa O, Y y negación), aun- 
que el MSX posee otros tres, XOR, 
IMP y EQV, que se pueden expresar 
como combinaciones de los tres pri- 
meros. 

En primer lugar, explicaremos los 
diversos elementos que componen 
este Algebra individualmente y sus 
características principales, dejando 
los casos prácticos para el final. Es 
importante entender el buen funcio- 
namiento de estos elementos, que 
además nos permitirán realizar autén- 
ticas diabluras a la hora de complicar 
las sentencias condicionales IF- 
THEN-ELSE. Iniciemos el estudio de 
la tabla por el caso más sencillo, se 
trata del operador NOT. 

Este es la negación de cualquier 



De la mano de George 
Boole, se inició una 
rama de la matemática 
imprescindible para el 
buen desarrollo de 
aplicaciones. 



elemento que venga a continuación, 
su tabla es; 

X NOT X 

0 1 

1 0 

Como podemos observar, con 
una condición (X) sólo pueden ocu- 
rrir dos casos, que sea cierta (1) o 
falsa (0), por lo que al aplicar este 
operador, obtendremos como resul- 
tado el contrario del valor inicial. 

Continuemos con el operador si- 
guiente en orden de importancia y 
que nuestros lectores conocerán de 
haberlo visto en las instrucciones IF. 

Permite comparar dos condiciones 
y ejecutar una acción, caso de que 
el resultado sea cierto. Como es ob- 
vio, se necesitan dos argumentos o 
condiciones que denominaremos X e 
Y, que pueden tomar hasta un total 
de cuatro valores que : 

X Y X AND Y 
0 0 0 

0 1 0 

1 0 0 
1 1 1 

Según la tabla, una instrucción del 
tipo X AND Y, sólo será cierta cuan- 
do las condiciones sean ciertas, es 
decir, "si ocurre la condición X" y la 
condición Y". 

Bien, es hora de introducir un 
ejemplo que ayudará a aclarar estos 
conceptos. 

En los programas, a veces nos en- 
contramos con instrucciones IF con 
el siguiente formato: 



810 IF RC 3 AND CC 
THEN 1040 



1 



Si la destripamos un poco y aplica- 
mos lo visto hasta el momento, po- 
demos darnos cuenta de que el pro- 
grama SOLO ejecutará la línea 1040 
en el caso de que RC sea mayor que 
3 (condición X) y que CC sea distinto 
de 1 (condición Y). Es decir, que si 
observamos la tabla, equivaldría al úl- 
timo caso. De nada sirve que se 



36 MSX 




Elemento fundamental en el desarrollo de 
aplicaciones y ayuda primordial en la toma de 
decisiones, el Algebra de Boole, se convierte, 
con el MSX en un protagonista digno de tener en 
cuenta. Sobre todo, con la posibilidad de poder 
implementar cualquier función de este álgebra, 
gracias a una serie de instrucciones que 
comentaremos a continuación. 



cumpla la primera condición y la se- 
gunda no, o que se cumpla la segun- 
da pero no la primera,' menos aún si 
no se cumple alguna de las dos. 
Comprendido esto, pasemos al últi- 
mo caso de los tres lógicos, OR. 
Este al igual que el anterior, compara 
entre entre dos condiciones, la posi- 
bilidad de que una (X) y otra (Y) condi- 
ción sea cierta. Su tabla es: 



X 

o 
o 
1 
1 



Y 
0 
1 

o 
1 



X OR Y 
0 
1 
1 
1 



Si la comparamos con el caso an- 
terior, observamos tres posibilidades 
en que la condición final sea cierta. 
Aquí sólo basta que una de las dos 
condiciones sea verdadera para 
quién el resultado también lo sea. 
Veamos el ejemplo anterior y sustitu- 
yamos el operador lógico AND por 
OR. 

810 IF RC 3 OR CC 1 
THEN 1040 

En este caso, para ejecutar la línea 
1 040 basta con que una de las con- 
diciones sea verdadera, que RC sea 
mayor que 3 o que CC sea distinto 
de 1. 

Antes de explicar el siguiente ope- 
rador, volvamos a ver las tablas. 
Quiero hacer constar que estos ele- 
mentos del Algebra de Boole, tienen 
sus honónimos en otras operaciones. 
¿Por qué no sustituís el operador ló- 
gico OR por el signo V y el opera- 
dor lógico AD por el signo V y desa- 
rrolladas las tablas de nuevo? ¿Qué 
resultado obtendréis al efectuar el 
cambio? 

Las respuestas a estas dos pre- 
guntas las dejamos a manos de los 
lectores, de esta forma podréis con- 
venceros de que todas las ramas de 
las matemáticas se interelacionan. 

Pues bien, hasta aquí hemos visto 
los tres operadores más importantes 
y más populares, en los que a pro- 



gramación se refiere. Los vemos 
continuamente en los programas y 
rutinas. Los que vamos a estudiar a 
continuación, no son tan extendidos 
ni tan conocidos como las anteriores, 
pero, son tres elementos que carac- 
terizan y potencian, a la vez que ele- 
van el nivel, de nuestro ordenador 
MSX. 

Estos tres operadores lógicos son: 
XOR, IMP y EQV. La primera se de- 
nomina OR-exclusiva, la segunda es 
la implementación y la rutina es la 
función de equivalencia. 

Vamos a realizar un pequeño pa- 
rentésis a estas alturas, para reiterar 
al lector, y perdonar la insisitencia, 
que estos operadores ayudarán a 
potenciar la construcción de la sen- 
tencia IF-THEN-ELSE. Más adelan- 
te y para cerrar este artículo, vere- 
mos unos ejmplos y explicaremos al- 
gunos propiedades del Algebra de 
Boole. 



posibilidades de este operador. 

Por ejemplo, podemos tener una 
instrucción del tipo: 

IF (A 132 AND (NOT 
c$ "pepe")) OR ((NOT 
a 132) AND c$ "pepe") 
THEN GO TO 1399 

y mediante la aplicación de este ope- 
rador reducirla a: 



IF a 132 XOR c$ 
THEN GO TO 1399 



"pepe" 



Esto es posible gracias a la aplica- 
ción de la tabla de esta función, que 

es: 



X 

o 
o 
1 
1 



Y 
0 
1 

0 

1 



X XOR 
0 
1 
1 

0 



Las tablas de verdad, 
son otra forma de 
aplicar los teoremas y 
las leyes de Algebra 
de Boole. 



Continuando con estos tres opera- 
dores, iniciemos esta segunda eta- 
pa con el XOR. 

La función que desarrolla este 
operador es la misma que si utiliza- 
mos los operadores AND, OR y NOT. 
Es decir, que si realizamos la tabla 
de verdad de la función X XOR Y, 
obtendremos como resultado una ta- 
bla que será igual a la que se obtie- 
nen haciendo la tabla de: (X AND 
(NOT Y)) OR ((NOT X) AND Y). Esto 
podrá sonar a Chino, pero si sustituí- 
mos las condiciones X e Y, por valo- 
res auténticos, es decir, funciones 
del tipo: A 132 o incluso C$ "pepe", 
podremos comprobar las inmensas 



Con esta tabla y las que hemos 
visto anteriormente, los lectores po- 
drán realizar las tablas de las dos 
funciones expuestas anteriormente y 
comprobar su igualdad. 

A continuación, hablaremos de la 
función de equivalencia, que en el 
BASIC MSX se representa por EQV. 
En esta, al contrario que la anterior, 
tiene la particularidad de tomar valo- 
res verdaderos (1) cuando las dos 
condiciones son ciertas, es decir, 
cuando X e Y sean iguales a 1 . Po- 
demos deducir, que su tabla de ver- 
dad será: 

X Y 3 EQV Y 



MSX 37 



Algebra de Boole 



0 


0 


1 


0 


1 


0 


1 


0 


0 


1 


1 


1 



Por último, queda por comentar el 
operador, IMP. No tiene muchas apli- 
caciones, por lo que se verá pocas 
veces. De cualquier manera, esto no 
es razón para no comentarlo. 

La función IMP, es la implementa- 
ción. Esta equivale a hallar la tabla de 
verdad de la negación del primer 
operador y a continuación, realizar la 
función OR entre el resultado. 

Su resultado es la siguiente: 



X 

o 
o 
1 
1 



Y 
0 

1 

o 
1 



IMP Y 
1 
1 

0 
1 



Pues bien, aquí acaba una intro- 
ducción de los operadores lógicos. 
Hagamos ahora, un sumario de las 
tablas antes de entrar en más mate- 
ria. 

Sumario de los opera- 
dores lógicos del BA- 
SIC MSX 



X Y AND OR XOR EQV IMP 
00 0 0 0 1 1 
0 10 110 1 
10 0 1 10 0 
11110 11 

Ya hemos visto todos los operado- 
res lógicos que posee el BASIC 
MSX, pero la explicación se queda im- 
completa si no vemos algunas rela- 
ciones importantes que nos podre- 
mos encontrar en los programas, y 
como no, poderlas realizar en los 
nuestros. Todas estas relaciones se 
pueden verificar mediante las tablas 
de verdad, de las que tanto hemos 
hablado en. este artículo. 

En total son 7 casos que podemos 
utilizar y que simplificarán el desarro- 
llo de los programas. Empezaremos 
con el operador OR. 



1- X OR 0 = X 

2- X OR X = X 

3- X OR X OR X OR... = X 

4- X OR (NOT X) = 1 

5- X OR 1 = 1 

6- X OR (X AND Y) = X 

7- X OR ((NOT X) AND Y) - X 
OR Y 

Las relaciones con el operador 
AND, son similares y son las siguien- 
tes: 

1- X AND 0 = 0 

2- X AND X = X 

3- X AND X AND X AND... = X 

4- X AND (NOT X) - 0 

5- X AND 1 = X 

6- X AND (X AND Y) = X AND 
Y 

7- X AND ((NOT X) AND Y) - 
0 

todas las relaciones se verifican 
por el procedimiento explicado ante- 
riormente. Si queremos hacerlo por 
nuestra cuenta, no olvidar que tanto 
X como Y, son expresiones matemá- 
ticas o lógicas. Estas también pue- 
den ser números solamente, por lo 



Los operadores 
lógicos, AND, OR y 
NOT, junto con los 
números binarios, 0 y 
1 , forman la base de 
toda la circuitería 
interna de un 
ordenador. 



que, para empezar a comprender las 
tablas haremos el siguiente ejerci- 
cio. 

Tomemos dos valores numéricos 
totalmente aleatorios, que pueden 
ser el 145 y el 58. Ahora comprobe- 
mos los catorce casos que se han 
explicado anteriormente, siendo la X 
el valor 145 y la Y el 58. A continua- 
ción y sustituyendo dichos valores 
en las expresiones comprobemos 
los resultados. Haremos 5 ejemplos 
y dejaremos al lector la ejecución del 
resto hasta los catorce que lo com- 
ponen. 

El comando PRINT nos ayudará en 
los ejemplos. 

Estos son algunas de las operacio- 
nes posibles. Siguiendo la pauta de 
la revista, queremos que el lector sea 
partícipe directo de la lectura y desa- 
rrollo de los artículos. Por esta razón, 
dejamos en sus manos completar la 
totalidad de los ejemplos. 

De la misma forma que hemos to- 
mado valores numéricos en las ex- 
presiones X e Y, también podríamos 
haber puesto cualquier otra expre- 
sión, del tipo a$="alfa" y"b =15. 
Este ejemplo está realizado con nú- 
meros puesto que es más fácil de 
explicar y entender. 

Para acabar, veremos como fun- 
cionan estos operadores dentro del 
contexto de la instrucción IF. 

Estudiar el funcionamiento de esta 
instrucción no es el objeto de este 
artículo, por lo que nos profundizare- 
mos en el tema. 

La sintaxis de esta instrucción es: 
IF (condición) THEN (acción) 
En este caso, la condición puede 
ser cualquier combinación de núme- 
ros, letras o números y letras. En es- 
tas condiciones se usan los operado- 
res aritméticos, que estaremos acos- 
tumbrados a ver y son: , , =, 
= y =. Dentro de estas 
condiciones podemos utilizar tam- 
bién funciones matemáticas del co- 
seno, seno, arctg, etc. El resultado 
de estas condiciones, puede ser 
cualquiera, como corresponde a las 
comparaciones. Pero existen otras 
comparaciones que se efectúan con 



38 MSX 



El BASIC MSX 
implementa un 
completo juego de 
instrucciones, que 
desde el AND hasta 
EQV, para manejar el 
Algebra de Boole en 
toda su extensión. 



expresiones, donde no se comparan 
con ningún valor en concreto y cuyo 
resultado, sólo puede ser cierto 
(TRUE) o falso (FALSE). La sintaxis 
de la sentencia IF con este formato 
es: 

IF (expresión) THEN (acción) 

Este ejemplo se verá mejor con un 
ejemplo. 



Muchas veces nos hemos visto en 
la situación de tener que comprobar 
si el resultado de una variable es 0 o 
no. Para ello tenemos esta instruc- 
ción, donde sustituyendo la expre- 
sión por la variable, obtendremos 
como resultado 0 ó 1 , según la res- 
puesta sea falsa o cierta respectiva- 
mente. 

Por ejemplo, queremos determinar 
si la variable X de cualquier progra- 
ma es 0, introduciremos la siguiente 
expresión: 

IF X THEN 2340 

Con ella podremos saber si, efecti- 



vamente, la variable en cuestión vale 
0 ó 1/ 

Con esta última explicación, finali- 
zaremos la introducción dedicada al 
Algebra de Boole. Por supuesto que 
podríamos haber explicado más e in- 
cluso, haber profundizado más en la 
materia, pero esto nos llevaría a ex- 
tendernos en demasía y no es cues- 
tión dedicar tantas páginas a este 
tema. Nuestra misión ha sido la de 
describir otra herramienta más, como 
es el Algebra de Boole, para realizar 
programas junto con los comandos 
que la implementan. Ahora sólo que- 
da, aunque suene repetitivo, que el 
lector, aplique estos conocimientos en 
la creación de sus programas. 



PRINT 145 AND ((NOT 145) AND 58) 
PRINT 145 OR (145 AND 58) 
PRINT 58 AND 0 
PRINT 59 AND 1 

PRINT 145 AND ((NOT 145) AND 58) 



el resultado será 



145 
145 
0 

58 
0 




TE AYUDA EN EL COLEGIO 



SOFTWARE EDUCATIVO ADAPTADO A TUS LIBROS DEL COLEGIO. EN DISKETE 0 CASSETTE 

ANAYA, BRUÑO, SANTILLANA, EVEREST, VIVES, SM, ETC 



TODAS LAS EDITORIALES - TODOS LOS CURSOS - TODAS LAS ASIGNATURAS 



Aulas de informática para colegios 
Venta ó alquiler de equipos 

Clases impartidas por personal cualiticado. 

* HB 55 y televisor TRINITON - 82.329 Pts. 

ó 36 cuotas de 2.835 Pts. al mes 

* HB 75 y televisor TRINITON - 98.320 Pts. 

ó 36 cuotas de 3.387 Pts. al mes 

eN TODAJSP*!** 




Disponible también para AMSTRAD, PC y compatibles. 



SOLICITA INFORMACION 

COLEGIO JOVELLANOS: Avda. Monforte de Lemos, 155 y 153 - Tino.: 201.38.03 - 28029 MADRID 



¿Quién no ha oído hablar del Al- 
gebra de Boole?* Siendo una de la 
más importantes ramas de las mate- 
máticas y sobre todo, herramienta 
ejemplar en el diseño de tablas de 
verdad y de circuitos lógicos, el Alge- 
bra de Boole, ha permitido a progra- 
madores y a diseñadores de circuite- 
ria, trabajar con más facilidad y 
soltura. 

En programación, se usa para 



ayudar a entender la instrucción IF. 

No es que esta sentencia sea 
difícil, sólo que cuando se complica 
mediante la incorporación de varios 
operadores lógicos, a veces nos las 
vemos y deseamos para compren- 
derlas. 

Estos operadores, a los que de- 
bemos estar acostumbrados son: 
AND, OR, NOT, NAND y XOR, los 
cuales tienen su significado que 



son: Y, O, NO, Y negada y Or- 
exclusiva. 

Una de estas tiene un desarrollo 
particular y único. A su vez, cada 
una de ellas tiene una tabla de ver- 
dad que le caracteriza. 

Este programa mostrará todas 
las tablas posibles que se pueden 
realizar con esos operadores lógi- 
cos y con un total de cuatro varia- 
bles. 



LOS JUEGOS ELECTRONICOS 



40 MSX 



5 CLS 

10 PRINT "introduce el numero de variables a utilizar ( hasta 4 ) " 
20 INPUT V 
30 GOSUB 1000 

40 PRINT: PRINT "introduce la función lógica a real i- zar. Puedes elegir entre A 
ND, NAND , OR, ÑOR y XOR" 

45 INPUT F$: CLS 

46 FOR N=l Tü V: PRINT CHR* < N+64 ) +" " ; :NEXT N 

48 PRINT ,F*:PRINT " » 

50 IFLEFTSÍ F*,l)="n" THEN NEG=1 
60 IF F$="and" ÜR F*="nand" THEN GOTO 2000 
70 IF F*="or" OR F*="nor" THEN GOTO 3000 
80 IF F$="xor" THEN GOTO 4000 

90 PRINT "esa función no la conozco. Introduce otra que si conozca" :GOTO 40 
1000 REM contruccion de tabla de variables 
1005 D=2' (V) : DIM M*(D) 
1010 FOR N"¿=1 TO D 

1020 m*<n:o=bin*<nx-i> 

1030 NEXT 

1040 REM normalización 
1050 FOR N=l TO D 

1060 L=LEN <M*<N)):IF L=V THEN GOTO 1080 ELSE FOR K=L+1 TO V :M* (N) ="0"+M* <N) :NE 

XT K 

1070 NEXT 
1080 RETURN 

2000 REM rutina and-nand 

2010 X=2^V-1 

2015 GOSUB 7000 

2035 GOTO 6000 

3000 REM -función or-nor 

3010 X=0: GOSUB 7000 

3020 GOTO 6000 

4000 REM función xor 

4010 FOR N=l TO D 

4015 PR=VAL ( <"8<b"+M$<N> ) ) :X=2^V-1 
4020 S=l :NEG=0 

4040 IF PR=0 OR PR=X THEN S=0 

4050 GOSUB 5000 

4055 NEXT N: GOTO 6000 

5000 REM rutina de presentación 

5005 IF NEG=1 THEN SWAP S,S1 

5006 IF F*="or" OR F*="nor" THEN SWAP S,S1 

5010 Z*=M*<N): FOR Q=l TO V:PRINTMID*< Z*,Q,1>+" "; :NEXT Q: PR I NT f S : RETURN 
6000 LOCATE 0,21: PRINT "quieres otra <s/n)":INPUT R*:IF R**"s" THEN RUN ELSE CL 
S:STOP 

7000 FOR N«l TO D 
7010 S=0:S1=1 

7020 IF X= VAL ( ( U 8cb"+M$ (N) ) ) THEN S«l iSl=0 
7030 GOSUB 5000 
7040 NEXT N 
7050 RETURN 



Los visitantes en Madrid 



Año; 2010. Lugar; España, con- 
cretamente Madrid. Los visitantes 
intentar reducir a las fuerzas rebel- 
des, pero la máxima concentración 
de fuerzas ^e encuentra cerca de 
Torrespaña. Estás al mando de un 
grupo de combatientes que tienen 
que eliminar el máximo número de 
extranjeros posibles. 

Para ello, no hay más remedio que 



sustituir la antena parabólica que se 
utiliza en las transmisiones, por un 
cañón (este se encuentra dentro de 
la antena, para disimularlo de los 
ojos ajenos). 

Hay varios tipos de naves, cada 
cual con su puntuación, consigue el 
recordé que aún nadie tiene. Para 
mover la antena, usa las teclas del 
cursor (izquierda/derecha) y dispara 



con la barra espaciadora. 

No os hagáis ilusiones, ya que 
como buenos lagartos, estos se re- 
producen constantemente, por lo 
que el ataque será eterno. En este 
caso, la suerte no es necesaria, ya 
que aunque la tengas de cara, no 
servirá de mucho. Lo que sí necesita- 
rás es buena puntería. ¡Qué la fuerza 
te acompañe! 



LOS JUEGOS ELECTRONICOS 



42 MSX 



10 REM LOS VISITANTES EN MADRID 

28 REM 

30 COLOR 1 ,0,4 

40 SCREEN 1,2,0 

50 CLEAR 1000 

60 DEFSNG A 

70 DEFINT B-R,T-Z 

80 DEFSTR S 

90* KEY OFF 

100 SPRITE OFF 

110 DIM SC(7) ,ST(8) 

120 REM AH=100 

130 GOSUB 2240 

140 SPRITE* ( 10) =S1 

150 SPRITE* (11 )=S2 

160 REM Instrucciones 

170 FOR 1=0 TO 9 

180 PUTSPRITE I , (255,192) ,0,1 

190 NEXT I 

200 CLS 

210 S=" LOS VISITANTES EN MADRID" 
220 PRINT S 

230 S=" " 

240 PRINT: PRINT: PRINT N 
250 S="Las teclas del cursor giran" 
260 PRINT S 

270 S="la antena a la izq/dcha." 
280 PRINT S 

290 S="Dispara con el espacio." 

300 PRINT S 

310 PRINT :PRINT :PRINT 

320 PUTSPRITE 10 , (40 ,78) ,3 , 10 

330 S=" 50 Puntos" 

340 PRINT S 

350 PRINT: PRINT 

360 PUTSPRITE 1 1 , (40 , 102) ,5 , 1 1 

370 PRINT S 

380 PRINT: PRINT 

390 PUTSPRITE 8 , (40 , 1 26) ,9 ,8 

400 S=" 100 Puntos" 

410 PRINT S 

420 PRINT : PRINT : PRINT : PRINT 

430 S="Pulsa una tecla para empezar" 

440 PRINT S; 

450 S=INPUT$(1) 

460 PUTSPRITE 8 , (40 ,208) ,0 ,8 

470 PUTSPRITE 10 , (40 ,208) ,0 , 10 

480 CLS 

490 REM Dibuja la ciudad 
500 CLS 



510 SGUND 7, &B 10 11 10(30 
520 LOCATE 0,24 
530 FOR 1=0 TO 7 
540 PRINT SC(I) 
550 NEXT I 

560 FGR 1=0 TO 6 STEP 6 

570 FOR J=0 TO 1 

580 LOCATE 6+1 ,2+J+I 

590 FOR K=232 TO 238 

600 PRINT CHR*(K+7*J) ; 

610 NEXT K,J,I 

620 LOCATE 0,0 

630 PRINT "Rec 

640 PRINT USING"#######" ;AH 

650 AP=0 

660 CC=129 

670 REM Creación de la estatua 

680 SPRITE*(4)=ST(4) 

690 XS=128 

700 YS=143 

710 REM 

720 REM 

730 PUT SPRITE 0 , ( 1 24 , 1 59) , 1 5 , 1 
740 PUT SPRITE1 , (124,143) ,15,2 
750 PUT SPRITE2, (125,168) ,15,0 
760 REM NEXT 

770 REM Creación de los sprites 

780 CL=1 

790 0S=-4 

800 LOCATE 15,0 

810 PRINT "Jug . :" ; 

820 PRINT US ING "#######" ;AP 

830 S=SPRITE$(7) 

840 IF S=S1 THEN S=S2 ELSE S=S1 

850 SPRITE* (7) =S 

860 XI =255 

870 YI=16 

880 CL=CL+2 

890 IF CL>9 THEN CL=3 

900 REM Movimiento del invasor 

910 XI=XI+OS 

920 I=OS 

930 IF XK-15 THEN OS=-OS 
940 IF XI>255-0S THEN OS=-OS 
950 IF OSOI THEN YI = YI+8 
960 PUTSPRITE 7 , (XI ,YI > ,CL,7 
970 IF YIM82 THEN 2140 
980 IF Y I< 1 1 2 THEN 1110 
990 I = ( Y I AND 24B)/8*32+32 
1000 1=1+ (XI AND 248) /8 



LOS JUEGOS ELECTRONICOS 



44 MSX 



1010 I=?/H 1800+1 

1020 IF VPEEK<I)=32 THEN 1060 

1030 VPOKE I ,32 

1040 CC=CC-Í 

1050 IF CC=0 THEN 2140 

1060 1=1+3 

1070 IF VPEEKU)=32 THEN 1110 

1080 VPOKE I ,32 

1090 CC=CC-1 

1100 IF CC=0 THEN 2140 

1110 IF B THEN 1190 

1120 IF XI < 4 OR X I >220 THEN 1360 

1130 R=RND (-TIME) #4 

1140 IF R THEN 1360 

1150 REM Trayectoria del proyectil 

1160 B=l 

1170 XB=XI+8 

1180 YB=YI+8 

1190 YB=YB+6 

1200 IF YB>191 THEN B=0 

1210 PUTSPRITE 8, (XB,YB) ,CL,8 

1220 I=(XB+5 AND 248) /8 

1230 J=(YB+4 AND 248)/8*32+I 

1240 J=2 < H1800+.J 

1250 K=VPEEK(J) 

1260 IF K<224 OR K >227 THEN 1360 
1270 VPOKE J,32 

1280 PUTSPRITE 8 , ( XB , 192) ,CL ,8 
1290 PUTSPRITE 9 , ( XB-3 , YB-3) , 1 ,9 
1300 GOSUB 2 700 
1310 'YB=192 

1320 CC=CC-1 

1330 IF CC THEN 1200 
1340 BOTO 2140 

1350 REM Mueve el cursor 

1360 FOR 1=0 TO 2 

1370 J=STICK(I) 

1380 IF J THEN 1=2 

1390 S=INKEY* 

1400 NEXT I 

1410 T=0 

1420 REM Mueve la antorcha 

1430 XS=XS+(2 AND XS<136 AND J=3) 

1440 XS=XS-<2 AND XS>120 AND J=7) 

1450 SPRITE*(4)=ST( (XS-120) /2) 

1460 PUTSPRITE 4 , ( 1 23 , 1 39 ) , 1 5 ,4 

1470 YS=143+ABS(XS-128) 

1480 IF F THEN 1640 

1490 FOR 1=0 TO 2 

1500 T=STRIG(I) 



151® IF T THEN 1=2 

1520 S=INKEY* 

1530 NEXT I 

1540 IF T=lZi THEN 1690 

1550 SOUND 0,100 

1560 SGUND 12,20 

1570 SOUND 13,3 

1580 H=XS-128 

1590 V=-<8--ABS<H) ) 

1600 F=l 

1610 REM 

1620 REM 

1630 REM 

1640 I=X>0 AND X<255 AND Y>YI 

1650 IF I THEN 1710 

1660 F=0 

1670 H=0 

1680 V=0 

1690 X = XS-5 

1700 Y=YS-13 

1710 X=X+H 

1720 Y=Y+V 

1730 PUTSPRITE 6, (X, Y), 15, 6 

1740 GOSUB 1800 

1750 IF T=0 THEN 910 

1760 SDUND 0,0 

1770 GOSUB 2900 

1780 GOTO 910 

1790 REM Detecta la colisión 
1800 IF F=0 THEN RETURN 
1810 I=ABS<Y-YI) 
1820 J=ABS<X"XI) 
1830 K=l 

1840 IF I<5 AND J<8 THEN 1890 
1850 I=ABS(Y-YB) 
1860 J=ABS(X-XB) 

1870 IF I>8 OR J>4 THEN RETURN 
1880 K=0 

1890 PUTSPRITE 6 , ( XS , YS) , 15 ,6 

1900 F=0 

1910 H=0 

1920 V=0 

1930 X=XS 

1940 Y=YS 

1950 IF K THEN 2070 

1960 PUTSPRITE 8 , < XB , 192) ,CL ,8 

1970 PUlSPRilE 9, <Xb~3, VL< -3) ,LL,9 

1980 YB=192 

1990 GOSUB 2700 
2000 B=0 



LOS JUEGOS ELECTRONICOS 



46 MSX 



2010 AP=AP+1©0 

2(2120 IF AP>»250000! THEN AP«INT <AP/lfiM9) 

2030 LOCATE 22,0 

2040 LOCATE 22,0:PRINT AP 

2050 GOSUB 2780 

2060 RETURN 

2070 PUTSPRITE 7 , (255 , 16) ,CL ,7 

2080 PUTSPRITE 9 , < X I , Y 1-4) ,CL ,9 

2090 GOSUB 2700 

2100 AP=APh50 

2110 GOSUB 2780 

2120 RETURN 790 

2130 REM Fin de), juego 

2140 BEEP 

2150 FOR 1=0 TO 10 
2160 VDP(7)=ÍB 
2170 FOR ,3=0 TO 100 
2180 NEXT J 
2190 VDP (7) =4 
2200 FOR J=0 TO 100 
2210 NEXT J,I 
2220 GOTO 170 

2230 REM Define la ciudad y las nubes 
2240 RESTORE 
2250 FOR 1=0 TO 31 
2260 READ 3 
2270 VPOKE 1792+1 ,J 
2280 NEXT I 
2290 VPOKE 8220,177 
2300 FOR 1=0 TO 111 
2310 READ J 
2320 VPOKE 1856+1 , J 
2330 NEXT I 
2340 VPOKE 8221 ,240 
2350 VPOKE 8222,240 
2360 FOR 1=0 TO 7 
2370 FOR J=0 TO 27 
2380 READ K 
2390 R-RND(-TIME) #4 
2400 K=32 OR 224+R AND -K 
2410 SC ( I ) =SC ( I ) +CHRÍ ( K ) 
2420 NEXT 3,1 
2430 GOTO 2510 
2440 REM Define los Sprites 
2450 SP="" 
2460 FOR ,1=0 TO 31 
2470 READ S 

2480 SP=SP+CHRt ( VAL ( "&H"+S) ) 
2490 NEXT J 
2500 RETURN 



2510 FOR 1=0 Tü 2 

2520 GOSUB 2450 

2530 SPRITE*(I)=SP 

2540 NEXT I 

2550 GOSUB 2450 

2560 S1=SP 

2570 GOSUB 2450 

2580 S2=SP 

2590 FOR 1=6 TO 9 

2600 IF 1=7 THEN NEXT 

2610 GOSUB 2450 

2620 SPRT TF$ ( I ) =SP 

2630 NEXT I 

2640 FOR 1=0 Tü 8 

2650 GOSUB 2450 

2660 ST(I)=SP 

2670 NEXT I 

2680 GOTO 2780 

2690 REH Explosión 

2700 SOUND 0,0 

2710 SOUND 3,0 

2720 SOUND 7 ,?/B101 10000 

2730 SOUND 12,50 

2740 SOUND 13,3 

2750 FOR 1=0 TO 500 

2760 NEXT I 

2770 PUTSPRITE 9 , (255 ,208) , 1 ,9 

2780 SOUND 0,0 

2790 SOUND 1 ,0 

2800 SOUND 2,0 

2810 SOUND 3,1 

2820 SOUND 4,0 

2830 SOUND 5,0 

2840 SOUND 6,255 , 

2850 SOUND 7 , &B 1 0 1 1 1 000 

2860 SOUND 8,16 

2870 SOUND 9,16 

2880 SOUND 10,0 

2890 SOUND 11,0 

2900 SOUND 12,8 

2910 SOUND 13,14 

2920 RETURN 

2930 REM Datos del programa 
2940 DATA 0,96,96,0,0,0,0,0 
2950 DATA 0,6,6,0,0,0,0,0 
2960 DATA 0,0,0,0,0,96,96,0 
2970 DATA 0,0,0,0,0,6,6,0 
2980 DATA 0,0,0,0,0,0,3,15 
2990 DATA 0,0,0,3,15,15,247,251 
3000 DATA 0,0,62,255,255,255,255 
3010 DATA 255,15,255,127,191,223 



LOS JUEGOS ELECTRONICOS 



48 MSX 



223,223, 


188,224, 




X. 


,255, 


255,255, 


2D-.I ,1o 


0 ,0 


,0,12 


8,240,63 


, ¿.-'-1 

* 


255 


,0,0, 


0 ,0 ,0 ,0 , 


192 




,31 ,63,63,63, 


31,15 


3,0 


,255, 


254 , 254 , 


Z-JJ 


251 


,247, 


129,0,25 


5,255 


255 


,255, 


255,254 , 


240,0 


251 


,247, 


215,185, 


127 


255 


,31 


), 247, 241 


,237 


251 


,255, 


255,255, 


248 


223 


,175. 


247,247, 


247 


227 


,128, 


0 , 240 , 24H 


248 


,248. 


,224,128, 


0,0 



. 1 



,E0,E0,E0 
5,E0 ,E0 



,C0 



3540 
3550 
3560 
3570 
3580 
3590 
3600 
3610 
3620 
3630 
3640 
3650 
3660 
3670 
3680 
3690 
3700 
3710 
3720 
3730 
3740 
3750 
3760 
3770 
3780 
3790 
3800 
3810 
3820 
3830 
3840 
3850 
3860 
3870 
3880 
3890 
3900 
3910 
3920 
3930 
3940 
3950 
3960 
3970 
3980 
3990 

4000 
4010 

4020 
4030 
4040 



DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 



i ,0,0,0,0,0,0,0 

c0,c0,ejZi,-f0,58 ,,-fc ,fe,e0 

e0, 0,0, 0,0, 0,0,0 
0,0,0,0,0,0,0,1 
1 ,0,0,0,0,0,0,0 
0 ,0 ,0,0,0 ,0 ,0 ,80 
80,0,0,0,0,0,0,0 



80,40 
40,80 

40 ,80 
80,40 



0,b ,14, Id ,2a ,35,52,3 



34 ,4a 
80, e8 
f7,47 

0 ,0,0 

78 , 10 

0,0,0 



0 
0 

73 

0 

C0 
0 
1 
0 



0 



,0 

:0 

,0 

,0 
>® 

C0 ,C0 
I? 1 

.0 
,0 



0 
1 
0 

80 

0 

3 

0 



,0,0,0,0,0,0,0 



80 ,C0 
3 
1 

C0 ,C0 

80,80 

0 

3 

0 



21 ,le 
0 ,0 ,0 

0,0,0 
0,0,0 



55,38 
14, d2 
8b ,f 3 



0,10, 78, 7f ,7-f 



0,0 
0,0 
0,0 

0,8 



0 ,0 

0,0 

6, e 

0,0 
0,0 
0,0 

7, -f 

0,0 
80 ,C0 
0,0 

1,1 
0,0 
G0 ,80 
0,0 

1 ,3 

0,0 

+ 0 ,e0 



,0,0,0,0,0,0,0 



0 ,0,0 
0,0,0 
0 ,60 , 



80,0,0,0,0,0,0,0 



0 ,0 ,0 
0,0,0 



Ce ,0 ,0 ,0 ,0 ,0 ,0 ,0 



0 ,0 ,0 
0 ,0 ,0 
0,0,8 



0 
0 
0 

le 



0 
0 
/0 



le, le, le, 21 

0 ,0,0 
0,0 ,0 
0,0,0 



17,9,6,0 
2f ,33,ed ,a5 
95,2e,f0,0 



0,0,0 

e0 ,e0 

0,0 

,3e,7f 



0,0 
0,0,0 

le, i-f ,3 

0,0 
0,80 
0,0,0 

3,1 

0,0 

0 ,0 ,80 
0,0,0 

1,1 
0,0 

80,80,80,80 

0,0,0 
0,1 
0,0 
f 0 ,C0 ,C0 ,80 



0,1 
0,0 

78 ,78 ,c0 



0 ,0 
0,0 



0,0,10,38,7c ,fe 



7,7 

0,0 



le , -fe , -fe 



le ,8 ,0 ,0,0,0,0 ,0 



LOS JUEGOS ELECTRONICOS 



50 MSX 




La 

pianola 



Si Beethoven levantara la cabeza, 
seguro que diría barbaridades, algo 
así como que estarnos estropeando 
la música, etc. 

Pero a estas alturas, el lector ten- 
drá algún que otro conocimiento so- 
bre las posibilidades musicales del 
ordenador. De cualquier manera, si 
aún cree que ha visto poco, teclea 
este programa. 



En el programa se dibuja un tecla- 
do de una pianola con buenas y di- 
versas variantes musicales. 

También incorpora un completo 
juego de instrucciones y totalmente 
auto explicativo, por lo que no hará 
falta comentar muy a fondo. 

Lo mejor que puede hacer es 
practicar con los diversos tonos, te- 
clas, duraciones, etc. 



MSX 51 



PIANO /" 



Id REM LA PI ANGLA 
20 CLS 

30 COLOR 7,1,1 
40 SCREEN3 
50 OPEN"GRP:"AS 1 

60 PRESET (65,60) :PRINT#1 , "P I ANO" 
70 KEY OFF 

80 FOR 1 = 1 TO 2000.-NEXT I 
90 SCREEN0 

100 LOCATE12,10:PRINT".8 
110 LOCATE25,0:PRINT"5B96 Octetos" 
120 PLAY "T255CPEC0EEF6EFGGAGFECGAGFECC03G04C" 
130 FOR 1=1 10 2000:COLOR,4:CQLOR,2:NFXT 
140 COLOR 7,1,1 :BEEP 

150 CLS :LOCATE0 , 1 0 : INPUT" Deseas ver las instrucciones" ;RÍ 

160 TF R*="s" OR R$="S" THEN 1170 ELSE 170 

170 SCREEN2 

180 REM * Cl AVES * 

190 LINE (23, 120) -(256,192) ,15,BF 
200 LINE (36. 120) (36,192) ,4 



210 l. INE(49,1?0) 
220 LINE (62. 120) 
230 L INF (75 



-(49,192) ,4 
(62,192) ,4 
.120) -(75,192) ,4 

240 LINE (88, 120) -(88,192) « 4 
250 LINE (J 01 .120) -(101 ,192) ,4 
260 L I NE ( l 1 4 , 1 20 > ( 1 1 4 , 1 92 ) ,4 
270 L I NE ( 1 27 , 1 20 ) - ( 1 ?7 , 1 92 ) ,4 
280 LINE ( 140, 1 20> -( 140,192) ,4 
290 L I NE ( 1 53 , 1 20 ) - ( 1 53 , 1 92) ,4 
300 I INE ( 166, 120) ( 166, 192) ,4 
310 LINE ( 1 79,120) -( 179,192) ,4 
320 LINF ( 192.120) -( 192,192) ,4 
,120) - (205 ,192) ,4 
(218,192) ,4 
(231 ,192) ,4 
,*20J (244 , 1 92) ,4 
. 1 20) - (40,160) ,4,BF 
, 120) - (53, 160) ,4 ,BF 
. 1 20) (79, 160) ,4,BF 
, l .'0) - (92, 160) ,4,BF 
4 10 1 TNF (97 , 120) - U05, 160) ,4 ,BF 
420 l INE( 188, 120) ( 196,160) ,4,BF 
430 I TNF ( 123,120) -d31 ,160) ,4,BF 
440 L INF ( 136,12®) (144,160) ,4,BF 
,120) - ( 1 70, 160) ,4 ,BF 
. 1 20 I ( 1 83 
,120)- (222 
4 00 L . I NE ( 22 7 . 1 20 ) ( 235 
490 L INE (Ü0.0) (170,13) ,6, B 
500 I 1 NF ( 23 , 5 t\ í ( 256 . 3 4 ) ,2 
510 I 1 NE < 23 , 64 ) *- < 25ó , 64 ) , 2 
520 L l NF ( 23 . 74 ) - ( 256 , 74 ) ,2 
530 L INE (23.84 > (256,84) ,2 
540 I rMF<23,94) (256,94) ,2 
550 C I RCLE ( 33 , 84 ) , 2 . 7 
560 P A 1NT ( 33 , 84 ) ,2,7 
570 PRESE T '90 ,4 ) :PRINT#1 , "F 
580 PRESE : T (105, 25 ) : PR I N T tt 1 , 
590 COLOR 1 :Í RFSFT (249 , 1 35) 
600 PRESET i 249 , 1 60 ) :PRINf*l 



330 L INF (20* 
340 l INF (218,1 20) 
350 LINE (23I . I 20) 
360 I INE (24 'i . 
370 LINE (32 
380 L I NE ( 45 , 
390 t INE <71 
400 i INF (84 , 



450 I INF ( 162 
460 L I Nfc ' 1 75 
4 70 I INE (21 4 , 



, t 60 ) , 4 , BF 
, 1 60) ,4 ,BF 
, 1 60 > , 4 , BF 



1 



ANO 
M S X" 
PR ÍNT4M 

610 COLOR 7: PRESET (67,0) iPRINTft] , " / 
620 PRESF f ( 1 80 ,0) :PR l NT# 1 , " J3" 
630 A*» INI F íi 
640 REM * NOTAS * 
650 COLOR / 

IHEN PLAY"C 



660 IF A*«"A rt 
670 IF A*="S" THEN PLAY "D" 



THEN PLAY "E ' 
IHEN PLAY "F" 
THEN PLAY "G' 
THEN PI A Y "A* 
IHEN PLAY"B' 



: PRESÉ T ( 203 , 65 ) :PR I N I * 1 , " / " 
: PRESET (233 ,61 ) :PRINT#l 
: PRESET (53,91 ) :PRINT#1 
: PRESE T (83 ,85) :PRINT#1 ,"/" 
: PRESET ( 1 13,81 ) sPRINTftl , "/" 
:PRESET( 143,75) :PRINT#1 , "/" 
: PRESET (173,71 ) :PRINT#1 ,"/" 



680 IF A$="D" 

690 If A*="E" 

700 IF Af="i," 

710 TF A$="H" 

720 IF A*="J" 

730 REM * OCTAVAS * 

740 IF A$="l" THEN PLAY "OT 

750 TF Aí-"?" THEN PLAY "02" 

760 IF A*="3" THEN PLAY "03" 



LOS JUEGOS ELECTRONICOS 



52 MSX 



770 IF A*="4" THEN PLAY "04" 

780 1F A$---"5" THEN PLAY "05" 

791? IF A*="ó" IHEN PLAY "06" 

800 IF A**"7 M THEN PLAY "07" 

8H? IF A$="8" THEN PLAY "08" 

820 REM * SOSTENIDOS * 

830 IF A*="0" THEN PLAY "C#" 

840 IF A*="W" THEN PLAf "Dtt" 

851? IF A*í="E" THEN PLAY "E#" 

860 IF A*^"R" THEN PLAY "F#" 

87«ZI IF A*="T" THEN PLAY "Gtt" 

880 IF A$="Y" THEN PLAY "A#" 

890 IF A*="U" THEN PLAY "B#" 

900 REM * BEMOLES * 

910 IF A*="I" THEN PLAY "C-" 

920 IF A*="0" THEN PLAY "D-" 

930 IF A$="P" THEN PLAY "E-" 

940 IF A$="K" THEN PLAY "F-" 

950 IF A*="L" THEN PLAY "G-" 

960 IF A$="M" THEN PLAY "A-" 

970 IF A*='V THEN PLAY " B~ 11 

980 REM * LONGITUD * 

990 IF A*="Z" THEN PLAY "T32" 

1000 IF A$="X" THEN PLAY "T80" 

1010 IF A$="C" THEN PLAY "T120" 

1020 IF A*="V" THEN PLAY "T170" 

1030 IF A*="B" THEN PLAY "T220" 

1040 IF A*="N" THEN PLAY "T255" 

1050 REM * MUSICA EN EL REGISTRO * 

1060 IF A*» "9" THEN PLAY " T250CDECDEEFGEFGGA6FECGAGFECCO3GO4C " 

;C*="GGBB04DDEE03FFAA04CCDD" :PLAYA*+A* :PLAYB*+A* :PLAYC*+A* :PLAY "04 " :BEEP 
1080 IF A*="-" THEN PLAY "04T255EDT1 20ET200DCO3BAT 1 50G#T255AO4 " 
1090 GOTO 630 

1100 REM * INICIALIZACION * 

¿Ü£J££&"" " THEN p RESET (203, 65) :C0L0R1 :PRINT#1 ,"1":PRESET (233,61 ) :PRINT#1 "■" i 

RESET ( 143 ,75) :PRINT#1 , "■" sPRESET ( 1 73 ,71 ) :PRINT#1 , "1" 

1120 LINE(23,64)-<256,64) ,2 

1130 LINE<23,74)-<256,74) ,2 

1140 LINE(23,84)-(256,84) ,2 

1150 LINE(23,94)-(256,94) ,2 

1160 GOTO630 

1170 REM * INSTRUCCIONES * 
1180 CLSrBEEP 

tes* A"°DO TE ?-R^ V OC ^ la escala ' bast * con sar las teclas siguien 

tes. A-DO, S=RED=MI , F=FA , G=SOL , H=LA , J»SI. M 

\IZ tSSíI^^ 8 ? ct — 1=P— ra, 2=segunda, etc." 

1210 LOCATE0,13:PRINT"Para alargar la nota, sitúese sobre las letras Z, X, C, V 

, B o N, siendo Z la más lenta y N la más rápida." 

I23S s°=^KEY* 2!PRINT ' ,PUlSa 61 SSpaCl ° para continuar" 
1240 IF S*=" " THEN 1260 
1250 GOTO1230 
1260 CLS:BEEP 

=SOL#^ OC ÍIla;! ! U^ t0 " r 5 ° StenidOS ' Q=DÜ »> W =* E *< R-F A# , , 

isa ajrrijs^ ios be * oies t 

1 oI?. L ^; E0 ' 1 ? lPRINT 51 -ted'tiene^ue^orrar las notas de entrada, 

para poder vol-ver a componer, es suficiente con pulsar el espacio " 
1300 LOCATE0,22:PRINT"Pulsa el espacio para continuar" P 
1310 Z*=INKEY* 
1320 IF Z*=" " THEN 1340 
1330 GOTO 1310 
1340 CLSsBEEP 

1350 LOCATE0,0 sP RINT"Como ejercicio tiene dos melodías grabadas que tendrá qu 

e generar. Es- tas se obtienen pulsando las teclas 9 u 0." 

1360 LOCATE0, 7 SPRINT" ¡Que lo paséis bien'" 

1370 LOCATE0,22:PRINT"Pulsa el espacio para continuar" 

1380 S*=INKEY* 

1390 IF S*=" " THEN BEEP s GOTO 170 
1400 GOTO 1380 
1410 STOP :END 




Continuando con las 
diversas rutinas que 
componen el complejo 
programa que está 
almacenado 
permanentemente en 
ROM, vamos a añadir 
algunas más a las que 
teníamos, esto no quiere 
decir que todo lo 
expuesto aquí sean 
rutinas en código 
máquina, pero por el 
momento, nada mejor 
para empezar, que ir 
comprobando el 
funcionamiento de estas 
rutinas. 

Pero este mes, 
iniciaremos la sección 
con una pequeña idea 
enviada desde Málaga 
por nuestro seguidor Diego 
Feliz Gil. 

Nos ha mandado un 
complemento a un dibujo 
generado en el artículo 
Diseño Gráfico, del 



número 1 de MSX 
Magazine. En él se 
explicó el funcionamiento 
de algunas instrucciones 
importantes y al final del 
artículo, se realizó un 
programa para mostrar 
dichos comandos. 
Este dibujaba un 
pingüino, pero como el 
dibujo en sí quedaba 
demasiado frío, nuestro 
amigo nos ha enviado 
unas líneas de programa 
que añadidas al ya 
existente, dibujan un 
sombrero. De esta forma 
nuestro simpático dibujo 
queda algo más 
interesante. 



Programa 1 

Alguna vez nos hemos 
topado con el problema 
de no saber cuanto 
tiempo llevamos delante 



de la pantalla, con un 
juego o un programa. Si 
tenemos reloj a mano, tal 
problema no tendrá más 
consecuencia, pero si no 
es así, el siguiente 
programa resolverá la 
cuestión. 

Este sencillo programa 
utiliza las interrupciones 
del sistema para 
visualizar un reloj en la 
esquina superior derecha 
de la pantalla, al mismo 
tiempo que ejecutamos 
nuestro programa. 
Este se puede dividir en 
dos parte. La primera es 
la encargada de habilitar 
las interrupciones y pedir 
la introducción de la 
hora. 

La segunda parte se 
situará al final del 
programa, poniéndo 
especial atención en no 
utilizar las mismas 
variables en el 



programas que en la 
rutina. 



Programa 2 

Ahora veremos unas 
cuantas rutinas más, a 
título de complemento a 
las expuestas el mes 
anterior, estas son 
equivalentes a lo que 
hacen dos instrucciones 
BASIC, que son, STRIG y 
STICK. 

La primera de las rutinas 
es la utilizada por el 
intérprete BASIC situado 
en ROM, para limpiar la 
pantalla (CLS). Comienza 
en la direción C3 
hexadecimal (195 
decimal) y la podremos 
utilizar en nuestros 
programas, aplicando el 
CALL correspondiente. 
Ahora veremos dos 
rutinas que son las 



54 MSX 



encargadas de leer el 
estado de los po/t de 
joysticks. 

La primera comienza en 
la dirección D5 
• hexadecimal (213 
decimal) y devuelve al 
acumulador el dato leído 
en el port correspondiente 
en ese registro antes de 
la llamada a la subrütina. 
En ensamblador se haría 
un programa de la 
siguiente manera: 

l_D A,1;joystick 1 
CALL 213 
CP1 JP Z, arriba 
CP 3 

JP Z, derecha 
CP 5 

JP Z, abajo 
CP 7 

JP Z, izquierda 
RET 



La que vamos a explicar 
a continuación, es el 
complemento de la anterior 
y sirve para comprobar si 
se ha pulsado algunos de 
los botones de disparo 
de cualquiera de los 
joysticks o la barra 
espaciadora. Comienza 
en la dirección D8 
hexadecimal (216 
decimal) y como la 
anterior, deberemos 
cargar en el acumulador 
el número de disparador 
que deseamos 
comprobar. A 
continuación, haremos el 
CALL correspodiente y la 
rutina nos devolverá en el 
acumulador 255, si se 
está pulsando el 
disparador y 0 en caso 
contrario. 




10 REM RELOJ 

28 INPUT "HORA 11 ; CX :INPUT" MINUTO" ;B'/. 
30 CLS 

40 ON INTERVAL=50GOSUB1000:INTERVALON 
50 GOTO 50 

1000 AX«A%+1 :IF AX=60THENA">í=0:B:í=B*¿ + 1 
1010 IFB7.=60THEN BX«1 tC5í«€í3£«C5í^1 
1020 IFC/Í = 13THEN C% = 1 

1030 LOCATE 22,0:PRINTCy. ; " f BX | 41 : " ;A% 
1040 RETURN 



37i3 REM Rutina enviada por Diego Félix Gil 

de Málaga para la sección de Ideas y Trucos, 
380 ' 

390 CIRCLE (100,35) ,17,3, ,, .4 
400 PAINT (100,30) ,3 
410 CIRCLE (100,5) ,5,15, , ,1 .4 
420 PAINT (100,5) ,15 
430 LINE (03,35)-(117,35) ,9 
440 LINE (S3",35)-(100,10) ,9 
450 LINE (100,10)-(117,35) ,9 
460 PAINT (100,20) ,9 
470 CIRCLE (100,35) ,17,3, ,, .4 
480 PAINT (100,30) ,3 
490 SOTO 490 



MSX 55 




En capítulos anteriores aprendimos una pequeña parte 
del conjuto de instrucciones que nuestro ordenador es 
capaz de entender. Con ellas hicimos algunos sencillos 
programas que realizan sumas de diferents magnitudes. 
Por esto, evidentemente, es bantante poco para nuestras 
pretensiones. Además siempre que llamábamos a un 
programa en lenguaje máquina teníamos que hacerlo por 
medio de BASIC, pasándole los datos por medio de 
POKEs y sacando los resultados con PEEKs. Otro 
problema era el de no poder salvar los programas en 
cinta. Aunque esto no resulta grave de momento, ya que 
los que hemos dado solo son útiles a efectos didácticos, 
va a ser necesario cuando crezcan y se conviertan en 
algo útil, ya que queremos consérvalos para no tener 
que introducirlos cada vez que queramos usarlos. 



CODIGO 



n tercer problema (todavía no 
resuelto) se presenta por la 
complejidad que representa in- 
troducir un programa como có- 
digos numéricos, debiendo hacer la 
traducción y conversión de todas las 
instrucciones y datos previamente. 
Sería mucho más fácil introducir las 
instrucciones 'LDA', 'ADD', etc, en 
lugar de sus correspondientes núme- 
ros. Esto en realidad se puede hacer 
por medio de unos programas espe- 
ciales. 

Hasta ahora hemos hablado indis- 
tintamente de lenguaje ensamblador 
y código máquina asumiendo que 
era lo mismo, pero hay grandes dife- 
rencias entre uno y otro. Diferencias 
que se explican ahora. Cuando no- 
sotros hablábamos de instrucciones 
del tipos 'LDA 45000', estábamos 
usando el lenguaje ensamblador. En 
cambio cuando poníamos los códi- 
gos numéricos correspondientes 
(decimales o hexadecimales) estába- 
mos usando código máquina. 

Es decir, un programa ensam- 
blador es aquel que nos permite usar 
las instrucciones por su nombre, es- 
cribir los números dieciseis bits 
como uno solo, sin tener que dividirlo 
en dos bloques de ocho bits y otra 
serie de ayudas que simplifican enor- 
memente el trabajo. En cambio en 
código máquina todas estas ayudas 
no existen y tenemos que manejar 
los números. En esta serie lo que se 
ha hecho ha sido escribir el progra- 
ma en ensamblador y traducirlo a 
mano, instrucción a instrucción, has- 
ta obtener el código máquina. 

Este proceso se puede automati- 
zar mediante el uso de los denomina- 
dos 'programas ensambladores' o 
más comúnmente 'ensambladores', 
que son programas escritos con este 
fin específico de traducir de uno a 
otro. El único problema es que toda- 
vía no hemos encontrado ninguno 
para los ordenadores MSX (los otros 
ordenadores no le valen aunque lle- 
ven el mismo microprocesador), y 
por tanto tenemos que seguir hacién- 
dolo como hasta ahora. Pero no de- 
sesperen, hemos enviado a toda la 
redacción (básicamente nuestro ex- 



56 MSX 



I ese desconocido (Cap. 4) 



celso director) en busca de uno y es- 
peremos que pronto nos encuentre 
alguno para anunciarlo en la revista y 
que todo el mundo lo pueda usar an- 
tes de enloquecer con los odiados có- 
digos. Naturalmente como ustedes 
los lectores también son parte de la 
redacción (¿Lo dudaban?) espera- 
mos su aviso si encuentran alguno 
antes que nosotros. 

¿Qué es el estándar MSX? 

Si usted se ha comprado un orde- 
nador MSX, o piensa comprarlo, una 
de las razones que habrán influido 
será la de que es estándar y por tan- 
to los programas de uno valen para 
otro. Esto implica que todos ellos tie- 
nen que tener unas características 
comunes a nivel interno y externo 
que los hagan compatibles. Pero 
pueden existir otros puntos en los 
que difieran (disposición interna de 
ciertos dispositivos, tipo de los dis- 
positivos, etc.). 

Muchas veces, como los progra- 
madores avanzados saben, es más 
fácil y rápido utilizar directamente al- 
gunos dispositivos que las rutinas 
previstas para ello, pero estos dispo- 
sitivos, o su localización pueden no 
ser estándar y, por tanto, diferir de 
un modelo a otro. Para evitar hechos 
como éste, en esta serie recurriremos 
siempre a las disposiciones estándar 
tal como las ha definido Microsoft 
(la casa que diseñó el estándar y que 
se lo vendió posteriormente a los dis- 
tintos fabricantes). Ya que todo orde- 
nador con la etiqueta 'MSX' debe 
cumplir esas características. Esto a 
veces puede complicar un progra- 
ma, pero no será mucho y siempre 
tendrá la ventaja de hacerlo compati- 
ble con todos los demás. 

Por tanto, a partir de este mes ire- 
mos comentado las características 
estándar del MSX y como usarlas del 
mejor método. 

Entradas y salidas 

Una de las cosas que diferencian 
a un ordenador de otro, son las en- 
tradas y salidas. Mientras existen 
múltiples ordenadores con el mismo 
microprocesador (por ejemplo, el ZX 



Spectrum, el Amstrad y los MSX, lle- 
van todos el Z-80) el tipo de pantalla 
que tienen, la disposición del tecla- 
do, como controlar el altavoz y la dis- 
posición de todos ellos en la memo- 
ria son distintas para cada marca de 
ordenador. En los MSX esto se ha 
estandarizado y todos llevan el mis- 
mo tipo de pantalla, el mismo tipo de 
teclado, el generador de sonido pue- 
de hacer lo mismo en todos, etc. Y 
lo que es más importante, el modo 
de manejarlos es el mismo en todos. 
Por lo que todo lo que digamos de 
ahora en adelante será válido para 
todos ellos. 

Como dos primeros puntos a estu- 
diar vamos a elegir los que nos falta- 
ban para completar la rutina de suma 
de capítulos pasados. La lectura del 
teclado y la impresión de pantalla. 
Veremos cómo hacerlo y cómo 
transformar los datos para que sean 
útiles para nuestro programa. 

El teclado, los caracteres 
ASCII 

Ya vimos que en la memoria inter- 
na del ordenador sólo se podían al- 
macenar números y, además, de 0 a 
255. Entonces, ¿Cómo podemos 
guardar caracteres 9 La respuesta 
reulta sorprendentemente fácil, sobre 
todo si se ha jugado alguna vez a 
cifrar mensajes, ya que se basa en 
asignar un código numérico a cada 
letra o signo y almacenar ese código 
en la memoria. La única restricción 
que se le impone a este sistema de 
codificación es que no puede haber 
ningún número menor de cero o ma- 
yor que doscientos cincuenta y cin- 
co, que es lo que cabe en un byte. 

Con estas pautas se pueden ge- 
nerar infinidad de códigos distintos. La 
industria ha estandarizado unos 
cuantos de ellos. El EBCDIC usado 
principalmente en los mainframes 
(grandes ordenadores) de IBM, y el 
ASCII, que es el usan todos los mi- 
croprocesadores y en especial los 
MSX, aunque en estos está modifica- 
da respecto al estándar. En la figura 
1 se da la lista completa de todos los 
caracteres junto a su correspondien- 



te código. Hay que tener en cuenta 
que desde el teclado algunos de es- 
tos caracteres se generan por medio 
de las teclas GRAF, CODE o mayús- 
culas. Adémás los códigos del 0 al 
31 en el ASCII estándar cumplen fun- 
ciones especiales de control de pan- 
talla e impresora (por ejemplo, el RE- 
TURN que es el salto de línea, es el 
código 13), por lo que el ordenador 
debe distinguir entre un caso y otro. 
De momento sólo utilizaremos los 
realmente estándar (del 32 al 127) y 
posteriormente veremos como usar 
los demás. 




Resulta muy importante tener en 
cuenta que con este sistema NO se 
almacenan números en la memoria 
(por lo menos con el significado que 
le vamos dando hasta ahora) sino 
códigos de caracteres que tienen 
distintos significado. Hay que obser- 
var que los símbolos de números (o, 
1 , 2, 3, 4, 5, 6, 7, 8 y 9) tiene asigna- 
dos los códigos del 48 al 57 y se al- 
macena cada uno en un byte. Esto 
nos indica que un número puede te- 
ner dos representaciones distintas, 
en binario como vimos al principio, 
en cuyo caso, cada byte puede al- 
macenar un valor entre 0 y 255, y en 
ASCII, que sólo permite un carácter 
en cada byte. También se despren- 
de de nuestra observación que el 
contenido de un byte puede ser un 
número (o parte de un número) ex- 
presado en binario o el código de un 



MSX 57 



£7 sistema más sabio 



PHILIPS introduce en España 
el HOM ECOM PUTER más sabio, 
el sistema MSX, nuevo estandard 
mundial. 

¡Con cuanta sabiduría se ha 
pensado en cada una de sus 
características! 

Con el PHILIPS MSX puede 
realizar mil combinaciones 
de elementos: monitores, 
impresoras, floppys, programas 
educativos, de juegos y 
aplicaciones profesionales, gracias 
a su compatibilidad total tanto 
en hardware como en software. 

El PHILIPS MSX está tan 
sabiamente diseñado que Vd. 
puede elegir entre conectarlo al 
televisor de su casa, o a un monitor 
monocromo o de color. 

De igual modo puede utilizar 
como unidad de almacenamiento 
de memoria un cassette normal 
o un Floppy Disc del sistema 
MSX. 



¡Y qué potencia tiene el 
PHILIPS MSX! 

Es tanta, que si lo utilizamos 
con un Floppy Disc y junto a 
MSX-DOS, es compatible con 
sistemas de tipo profesional y de 
precio mucho más elevado. 

Y aquí no acaba la sabiduría 
con que ha sido creado el 
PHILIPS MSX. 

Puede hacerlo crecer según 
sus necesidades, desde un 
sencillo ordenador doméstico, 
con el lenguaje Basic más 
potente del mercado, hasta un 
sistema de tipo profesional que 
puede llegar a una capacidad 
máxima de 1.024 K bytes. 

PHILIPS MSX. Nunca se le 
quedará pequeño, nunca se 
le quedará anticuado. 

PHILIPS MSX, creado como un 
equipo atractivo, fácil 
de usar y muy asequible de 
comprar. 



PHILIPS MSX HOMECOMPUTER SYSTEM 
El amigo sabio de la familia. 



¡PHILIPS MSX, sin duda, el 
sistema más sabio! 

MSX-DOS es compatible con 
CP/M™ y posee la misma 
estructura de ficheros que 
MS-DOS™. 

Todos los sistemas MSX son 
compatibles entre sí. 



MSX, MSX-DOS™ y MS-DOS™ son marcas 

registradas de Microsof Corp. 

CP/M™ es una marca registrada de Digital 

Research. 



O Si desea algún tipo de 
información relacionada con 
el campo del HOMECOMPUTER, 
estamos a su disposición en el teléfono 

(91) 413 22 46 

(""¡Desearía recibir más información"! 
sobre el PHILIPS MSX. 

Nombre 

Apellidos | 



Domicilio 



PHILIPS IBERICA S.A.E. 
Apartado de Correos 50.800 
28080 MADRID 



x 



" ': 

ESPECIFICACIONES 
TECNICAS 

Consola VG 8010 

Sistema MSX. 

Teclado: Teclado con disposición y separación es- 
tilo profesional de 72 teclas. 
Memoria: 32 K ROM, 48 K RAM (incluyendo 16 
K RAM de vídeo). 

Interconexiones incorporadas: Salida de RR Sali- 
da Monitor, Interface audio-cassette, 2 conectores 
para controles manuales. 2 ranuras para cartuchos. 

Consola VG 8020 

Sistema MSX. 

Teclado: De recorrido completo, profesional con 
73 teclas. 

Memoria: 32 K ROM, 80 K RAM (incluyendo 16 
K RAM de vídeo). 

fnten anexiones incorporadas: Salida de RF. Sali- 
da Monitor. Interface audio-cassette. 2 conecto- 
res para controles manuales, 2 ranuras para car- 
tuchos, Interface para impresora. 

Características comunes 
VG 8010/VG 8020 

Conjuntos de caracteres 253 alfanuméricos y grá- 
ficos (incluye la ñ). 

!>><>< rsadows Principal Z 80 A, Audio AY-3-S'Un, 
Vídeo TMS 9929 A. 

lenguaje BASIC MSX 130 instrucciones incorpo- 
rando macrocomandos y sprites. 
Posibilidad máxima de expansión de memoria 
1M. byte. 

Editor de pantalla. 

Utilizando MSX-DOS™ es compatible con 
CP/M IM y tiene la misma estructura de ficheros 
que MS-DOS™ 

Monitor monocromo 
BM 7552 y BM 7502 

Tubo de Imagen: Pantalla de alta resolución de 
12", antideslumbrante. Fósforo P 42. 
Ancho de Banda: 20 MHZ (a -3 dB). 
Resolución: Horizontal: 920 líneas en el centro. 
Vertical: 285 pixels. 

Caracteres en pantalla: 80x25 (2.000) 
Salida Sonora: 0,3 W con 5% de distorsión. 

Impresora de matriz 

vw ooio. 40 columnas y vw 0020 de 80 colum- 
nas. 

Método impresión Matriz, de puntos por impactos 
Matriz de carácter de 8x8 puntos. 
Paso de caracteres 10,5 cpi y 10 cpi, respectiva- 
mente. 

Velocidad de impresión i^S cps y 37 cps respecti- 
vamente. 

Mecanismo PF alimentación por fricción y trac- 
ción. 

Próximos lanzamientos 

Monitor de color 14". 

Floppy disc V/r 500 K sin formatear (360 K 
for mateado). 

Software 

Disponibles en MSX más de 150 títulos entre apli- 
caciones, utilidades, educativos y juegos en so- 
porte ROM s , cassette y floppy de 3'/2". 



¿CÓ0Í6O MÁ3U/MAP, 



carácter en ASCII. Evidentemente es 
necesario distinguir entre un caso u 
otro, ya que los significados son dis- 
tintos en cada uno, pero por desgra- 
cia no existe ningún sistema que nos 
diga si el contenido de un byte cual- 
quiera de la memoria es de uno u 
otro tipo. 

Es más, además de estos dos ca- 
sos existe un tercero, ya que ese 
byte puede ser una instrucción de un 
programa. El único modo de diferen- 
ciar entre todos los casos es estable- 
ciendo el programador el significado 
de cada uno y procurando que el 
programa no haga operaciones ilega- 
les. Esto no representa una prohibi- 
ción real de cara al ordenador y si el 
programa está mal hecho pueden 
producirse errores. Basta pensar en 
las rutinas de suma de capítulos an- 
teriores. Si hubiésemos colocado 
erróneamente la dirección de alma- 
cenamiento de datos empezando en 
la memoria 40000. estaría en las mis- 
mas posiciones que el programa y al 
escribir encima nos lo borraría produ- 
ciéndose un error (como se ve en la 
figura 2) al intentar ejecutar el micro- 
procesador una instrucción que no- 
sotros no le habíamos dicho. Por tan- 
to hay que vigilar el contenido de cada 
memoria y recordar que clase de 
dato se almacena en ella. 

Una máquina de escribir 

El primer programa que vamos a 
hacer es muy sencillo y su utilidad 
mínima, pero nos enseñará como 
manejar códigos ASCII. Básicamente 
consiste en una máquina de escribir, 
ya que lee los códigos de las teclas 
que pulsemos e imprime por pantalla 
el carácter correspodiente. Esto se 
sigue haciendo hasta que pulsemos 
un punto en cuyo caso terminará 
la ejecución. 

Para poder hacerlo vamos a 
aprender algunas instrucciones más, 
una de ellas compara el contenido 
del acumulador con un byte y pone 
las diversas banderas del registro F 
de un modo u otro según resulte la 
comparación. Otra instrucción que 
vamos a aprender es la de llamada a 
subrutina. Esta nos permite llamar a 
otros programas en código máquina 



para que ejecuten su acción y luego 
se devuelvan el control al terminar 
(siempre que tengan una instrucción 
RET al final). Estas rutinas pueden 
ser de las incluidas en la ROM de 
nuestra máquina o escritas por noso- 
tros mismo y equivalen a los GOBU- 
B...RETURN del BASIC que nos per- 
mite definir las operaciones más co- 
munes aparte y luego llamarlas des- 
de el programa. En ensamblador la 
llamada se realiza poniendo CALL' 
( CDh o 205) seguido de la dirección 
de las subrutinas en dieciseis bits. 

En este caso las rutinas que usare- 
mos ya están definidas en la ROM y 
consisten en dos. La primera espera 
que pulsemos un carácter en el te- 
clado y cuando lo hacemos devuelve 




el control a la que le ha llamado con 
el código de dicho carácter en el 
acumulador. Se llama CHGET y se 
encuentra en la dirección '0009Fh\ 
La segunda imprime e la pantalla el 
carácter cüyo código se encuentre el 
en acumulador, se llama CHPUT y 
está en '00A2h'. Después de ver 
esto queda claro que el núcleo de 
nuestro programa consiste simple- 
mente en llamar a la primera rutina y 
cuando nos devuelva el control lla- 
mar a la segunda, ya que el dato que 
nos interesa (el código del carácter) 
viene en el acumualdor de la primera 
y se tiene que enviar a la segunda 



MSX 59 



también en el acumulador sin ningu- 
na modificación. 

Después de esto se coge el carác- 
ter (que aún sigue en el acumulador 
ya esta segunda rutina no lo borra) y 
se compara con el código del punto 
(46 ó 2EIY) por medio de la instruc- 
ción 'CP', que compara el contenido 
del acumulador con el byte que se 
indique. Esta instrucción admite 
como muchas otras, varios tipos de 
direccionamiento. El que veremos 
ahora es el inmediato, que compara 
el byte que sigue a la instrucción. El 
formato de escritura en ensamblador 
puede ser de dos tipos. En el prime- 
ro se pone la instrucción seguida del 
carácter entre comillas, en nuestro 
caso 'CP el programa esambla- 
dor (o nosotros) pondrá el código de 



ANTES 



instrucción 



instrucción 



instrucción 



instrucción 



instrucción 



escribir 

en ero posición 



DESPUES 



instrucción 



instrucción 



instrucción 



instrucción 



instrucción 



instrucción 



FIGURA 2 



la instrucción seguido del código del 
carácter especificado. El segundo 
formato consiste en poner la instruc- 
ción y detrás del código del carácter, 
'CP 46'. Este segundo formato tiene 
la ventaja de explicar claramente lo 
que se hace, pero para saber que 
carácter es tendremos que buscarlo 
en la tabla (Además deberemos sa- 
ber que nos estamos refiriendo a un 
crácter y no a un número binario. En 
cualquiera de los dos casos el códi- 
go generado será el mismo, por lo 
que el usuario queda libre de usar 
uno u otro sistema. 

Una vez realiza la comparación, 
las banderas del registro F quedan 
como si se hubiese hecho una resta 
pero sin modificar el contenido del 
acumulador. La bandera 'N' siempre 



0 




33 


1 


66 


B 


99 


c 


1 


Q 


34 




67 


C 


100 


d 




0 


35 


# 


68 


D 


101 


B 


J 


mm 


36 


* 


69 


E 


102 


f 


A 

4 


♦ 


t—\ —y 

37 


'A 


— j ,-v 


F 


103 


q 


5 


* 


38 


& 


71 


G 


104 


h 


O 


9 


no 

J7 




( xL 


H 


105 


i 


7 


• 


4lZi 


( 


73 


J 


106 


j 


8 


o 


41 


) 


74 


J 


107 


k 


9 




42 


* 


75 


K 


108 


i 


10 


□ 


43 


f 


76 


L 


109 


m 


1 1 




44 




77 


M 


1 10 


n 


12 


i 


45 




78 


N 


1 1 1 


o 


13 


/ 


46 




79 


0 


112 


P 


14 


JO 


47 


/ 


80 


P 


113 


q 


15 


* 


48 


0 


81 


Q 


1 14 


r 


16 


♦ 


49 


1 


82 


R 


115 


s 


17 




50 


n 


83 


S 


116 


t 


18 


T 


51 


3 


84 


T 


117 


u 


19 


1 




4 


85 


U 


118 


V 


2d 


y 


53 


5 


86 


v 


119 


w 


21 


t 


54 


6 


87 


W 


120 




22 


i 


55 


7 


88 


X 


121 


y 


23 




56 


8 


89 


Y 


122 


z 


24 


r 


57 


9 


90 


Z 


123 


c 


25 


i 


58 


■ 
• 


91 


E 


124 


1 
• 


26 


L 


59 


■ 


92 


\ 


125 


} 


27 


J 


60 




93 


1 


126 




28 


X 


61 




94 




127 




29 




62 


y 


95 




128 




3IZI 




63 




96 


> 


129 


ü 


31 


•+■■ 


64 


@ 


97 


a 


130 


é 


32 




65 


A 


98 


b 


131 


á 



60 MSX 



puesta a uno, la 'C se pone a uno si 
el operando externo es mayor que el 
acumulador y a cero en caso contra- 
rio. La 'P/V es similar a la 'C pero 
considerando números con signo. La 
'H' lo hará de un modo similar co los 
cuatro bits de la derecha, la de signo 



S', como siempre, será igual al bit 
más significativo y la Z' se pondrá a 
uno solo si la resta da de resultado 
cero, es decir, si ambos son iguales. 
Esta última bandera es la que nos 
interesa en este caso, porque hare- 
mos uno u otra según sean iguales o 



ENSAMBLADOR DECIMAL HEXADECIMAL 

INICIO CfiLL 159 205 159 00 CO $F 

CflLL 162 205 162 00 C0 A2 

CP- " " 254 46 FE 2E 

JR H2, INICIO 32 246 20 F6 

RET 201 C9 

FIGUfiR 3 



00 

00 



¿CÓ0Í6O MÁOU/A//\p 



V*. 



J 32 


a 


165 


r.i 

w 


198 


1 


133 


á 


166 


a 


199 




134 


á 


167 


0 


200 


■ 


135 


c 


168 


¿, 


201 


1 


136 


é 


169 


r 


202 


1 


137 


é 


170 


-i 


203 


'/ 


138 


e> 


171 


l/ i 


204 




139 


i 


172 


"4 


205 




140 


i 


1 73 


i 


206 


* 


141 


i 


174 


( 


207 




142 


Á 


175 


>> 


208 


i 


143 


Á 


176 


'V 


209 


I 


144 


É 


177 


a 


210 


M 


145 


X 


178 


f 


21 1 


■ 


146 


i 


179 


/w 
1 


212 


* 


147 


ó 


180 


es 


213 


■ 


148 


0 


181 




214 


■ 


149 


6 


182 


u 


215 


* 


150 


Ú. 


183 


u 


216 


A 


151 


Ci 


184 


Q 


217 


* 


152 


y 


185 


i' 


218 


u 


153 


0 


186 




219 


■ 


154 


ü 


187 




220 




155 


r 


188 




221 


r 


156 


£ 


189 


i.. 




1 


157 


¥ 


190 


•TI 


223 




158 




191 


§ 


224 


•y 


159 


i 


192 






B 


160 


á 


193 




226 


P 


161 


i 


194 


■ 


227 


ir 


162 


Ó 


195 




228 


C 


163 


Ú 


196 






0 


164 


ñ 


197 


■ 


230 


M 



no. Si son iguales hay que volver al 
principio para leer otro carácter. Esto 
se hace poniendo una instrucción 
JR NZ\ que ya vimos en el capítulo 
pasado, a continuación di 'CP' de 
modo que comprueba esta bandera 
T y si no está puesta se salta hacia 
donde se dice. Por último para aca- 
bar se pone un 'RET' después de 
ésta. 

En la figura 3 se ve el listado com- 
pleto en ensamblador (con los nom- 



231 
232 
233 
234 
235 
236 
237 
238 
239 
240 
241 
242 
243 
244 
245 
246 
247 
248 
249 
250 
251 

253 
254 



i 

O 

Q 
6 
•x. 
* 
e 
n 



•c 



c 

n 
2 



MSX 61 



bres de las instrucciones) y en códi- 
go máquina (decimal y hexadecimal). 
Observando el listado en ensambla- 
dor se puede ver que en el salto no 
se pone el desplazamiento como ha- 
cíamos el mes pasado, sino que se 
indica un nombre y ese mismo nom- 
bre está delante de la instrucción a la 
que queremos ir. Esta palabra se de- 
nomina etiqueta y simplifica mucho 
el trabajo cuando se está trabajando 
con un programa ensamblador ya 
que éste se encarga automáticamen- 
te de calcular el desplazamiento. En 
cualquier caso aclara el listado para 
leerlo. Como norma siempre utilizare- 
mos las etiquetas en el listado en en- 
samblador y el desplazamiento en el 
listado en código máquina, de este 
modo el programa será fácilemente 
comprensible y los códigos se pue- 
den introducir inmediatamente. 

El programa se puede introducir 
como es habitual en la dirección 
4000 por medio del cargador hexa- 
decimal. Para ejecuarlo se utilizan las 
habituales instrucciones: 

DEFUSRO - 4000 
PRINTI USR0 (1) 

A continuación cualquier carácter 
que tecleemos aparecerá en la pan- 
talla como si estuviésemos trabajan- 
do con una máquina de escribir. Al 
pulsar un punto se terminará de eje- 
cutar la rutina y después de imprimir 
OK' el ordenador volverá a su modo 
de funcionamiento normal. 

Como salvar nuestros pro- 
gramas 

Vamos a explicar ahora como sal- 
var y leer programas en código má- 
quina en cinta. Esto resulta funda- 
mental cuando se escriben progra- 
mas largos e interesantes para evitar 
tener que introducirlos de nuevo. El 
BASIC del MSX tiene dos instruccio- 
nes especiales para esto. La primera 
es: 

BSAVE "nombre del progra- 
ma", dirección inicial, dir. final, 
dir. ejec. 

La dirección inicial es la menor 
ocupada por el programa (en los que 



hemos hechos, ésta es donde em- 
pieza a ejecutarse). La dirección final 
es la más alta ocupada por el progra- 
ma. El modo de hallarla es muy sen- 
cillo. Se cuenta el número de bytes 
que ocupa el programa y se le suma 
a la dirección inicial, al total se le res- 
ta uno y ésta es la dirección final. Por 
último la dirección de ejecución es 
donde se empieza a ejecutar el pro- 
grama cuando lo cargamos. Si no se 
pone esta dirección se considera 
que es la misma que la dirección ini- 
cial. 

Así, por ejemplo, para salvar el 
programa que acabamos de crear 
con el nombre 'ECO', habría que es- 
cribir: 

BSAVE "ECO", 40000, 40010 

La dirección de ejecución no se 
ENSAMBLADOR 



poe ya coincide con la dirección ini- 
cial. 

Para cargar un programa previa- 
mente grabado se utiliza: 

BLOAD "nombre del progra- 
ma", R desplazamiento 

El nombre tiene que ser el mismo 
con el que se salvó, si se pone la R 
el programa se empezará a ejecutar 
automáticamente al terminar de car- 
garse. El desplazamiento es opcional 
y si no se pone el programa se carga- 
ra la dirección que se salvó, pero 
si se pone, esa dirección se suma a la 
que se usa para salvarlo y el progra- 
ma se carga a partir de ésa. No con- 
viene usar esa última opción ya que 
muchas veces el programas utiliza 
direcciones absolutas en los saltos y 
ya no serián válidos al modificar su 

BASIC 



INICIO 


' CAL.L 


159 


10 A$-INKEV$ 




CP 


V 


20 IF fl$<" 


a" THEN 




JR 


C, INPRI 


GOTO 50 






CP 


ti | ii 


30 IF R$>- 


T THEN 




JR 


HC , 1 UPA 1 GOTO 50 






SUB 


«32 


40 A$»CHA$(ASC(Af)-32) 


IMPRI 


CfiLL 


162 


50 PRINT fl$; 




CP 


ii ii 


60 IF R$=" 


." THEN 




JR 


NZ, INICIO GOTO 10 






RET 




70 JEN0 




F I GURA 


5 








ENSAMBLADOR 




DEC 1 UAL 


HEXADEC 1 flAL 


INICIO 


CRLL 


159 


205 159 00 


CO 9F 00 




CP 


V 


254 97 


FE 61 




JR 


C, INPRI 


56 6 


36 06 




CP 


"{" 


254 123 


FE 76 




JR 


NC, INPRI 


48 2 


30 02 




SUB 


«32 




06 20 


inpRi 


CRLL 


162 


205 162 00 


C0 R2 00 




CP 


N u 


254 46 


FE 2E 




JR 


NZ., INICIO 


32 236 


20 EC 




RET 




201 


C9 



FIGURR 6 



62 MSX 



posición en memoria. O también 
puede ser que se ponga encima del 
área de datos, creado problemas 
como vimos anteriormente. 

Para cargar y ejecutar el programa 
anterior sería: 

BLOAD "ECO", R 

Minúsculas y mayúsculas 

El siguiente programa que vamos 
a hacer nos permtira profundizar un 
poco más en el tema de las corrpa- 
raciones así como en el manejo de 
los caracteres ASCII, especialmente 
veremos como pueden ser tratados 
como tales o como números cuando 
nos interesa. 

Esta rutina realizará la misma ope- 
ración de lectura y escritura de antes 
pero además convertirá todas las mi- 
núsculas a mayúsculas antes de im- 
primirlas. El primer paso a realizar 
será, como antes, obtener el carác- 
ter del teclado, a continuación mirará 
si es un miyúscula y si lo es la con- 
vertirá en mayúsculas, en caso de 
que no lo sea (que ya sea mayúscu- 
la, o cualquier otro símbolo) lo impri- 
mirá directamente. 

La operación de leer un carácter 
del teclado se realizará como antes 
por medio de la rutina CHGET, a 
continuación se realizan dos compar- 
taciones, la primera con 'a' y la se- 
gunda con 1 ' (el carácter posterior 
a la 'z') . En el primer caso, si la ban- 
dera de acarreo 'C está a cero indi- 
ca que el carácter del acumulador es 
mayor o igual a la 'a', en le segundo 
caso la bandera de acarreo a uno se- 
ñala que este carácter es inferior a 
' '. Si se cumplen las dos compara- 
ciones entonces es una letra minús- 
cula. En el programa lo que se hace 
es realizar la primera comparación , 
a continuación se realiza un salto con- 
dicional a la parte de impresión si la 
bandera de acarreo está a uno y si 
no se realiza la segunda compara- 
ción, a continuación de la cual se 
realiza otro salto condicional a la po- 
sición de impresión si la bandera de 
acarreo está a cero. En caso de que 
no se haga el salto se realiza la con- 
versión a mayúsculas. 



Este proceso de conversión es 
muy sencillo si se tiene en cuenta 
que los códigos de las mayúsculas 
tienen la misma ordenación y que los 
caracteres respectivos se diferencian 
en 32 (la 'A' tiene el código 65 y la 
'a' el 97, que es 65+32, la 'B' tiene 
el 66 y la 'b' el 98. etc). Ya que sa- 
biendo que es una minúscula, basta 
restarle 32 para obtener su corres- 
pondiente mayúsula. En este caso 
tratamosal byte como si fuese un nú- 
mero binario pero se hace consciente- 
mente de que lo que manejamos es 
un código ASCII y la operación se 




realiza para obtener otro código AS- 
CII. 

Por último y una vez convertida a 
mayúscula, se llega a la parte de im- 
presión que es donde se va desde los 
dos saltos incondicionales anteriores. 
Aquí se vuelve a recurrir a la rutina 
CHPUT que vimo antes. Después de 
esto se comprueba, como antes, si 
es el carácter de terminación (el pun- 
to, aunque puede ser cualquier otro 
cambiando ese dato) y volviendo al 
principio si no lo es. 

En este programa se utilizan algu- 
nas instrucciones nuevas. Las dos 
primeras son 'JR C y 'JR NC\ que 
realizan saltos incondicionales del 
mismo modo que el 'JR NZ' que ya 
hemos usado, pero comprobando la 
bandera de acarreo y saltado si está 
a uno u otro cero respectivamente. 
Los códigos de operación correspo- 
dientes so '38h' (56) para 'JR C y 
'30h' (48) para 'JR NC\ Ambas de- 



ben ir seguidas del desplazamiento 
que sumado al contador del progra- 
ma nos de la siguiente dirección de 
ejecución. 

La otra instrucción nuev^ que va- 
mos a usar es la de restar. Esta tiene 
un formato y manejo similar a las de 
sumar pero restando el número indi- 
cado del que está en el acumulador. 
Al igual que con la suma puede ha- 
ber resta con o sin bit de acarreo, 
pero ahora consideraremos sólo la 
que no lo usa. El nombre de la ins- 
trucción es 'SUB' y el código cuando 
se realiza con direccionamiento in- 
mediato es 'D6h' (214) que debe ir 
seguido del byte a restar. 

En la figura 5 se da el listado en 
ensamblador del programa y al lado 
se ha metido un 'pseudo listado' en 
BASIC en el que se pueden ver las 
instrucciones equivalentes. Aunque 
este listado funciona si se introduce 
en el ordenador, su finalidad es ver, 
paso a paso, lo que hace la rutina 
comparándola con un lenguaje más 
conocido como es el BASIC. 

En la figura 6 se vuelve a dar el 
listado en ensamblador pero acom- 
pañado esta vez por los códigos de- 
cimales y hexadecimales. 

Resumen del capítulo 

Este mes hemos visto como se 
pueden realizar comparaciones y sal- 
tos condicinales en base a estas 
comparaciones. Como llamar a su- 
brutinas y como restar dos bytes. Así 
mismo se ha visto el código ASCII y 
su funcionamiento por medio de dos 
programas que hacían eco del tecla- 
do a la pantalla. Aquellos lectores 
que crean interesante convertir su or- 
denador en ua máquina de escribir 
de verdad y posean impresora, pue- 
den modificar rápidamente el primer 
programa sustituyendo la dirección 
de salto de impresión por '00A5h\ 
que es la dirección para sacar el ca- 
rácter por impresora, en lugar de por 
pantalla. También les convendría el 
carácter de determinación (el punto) 
por algún otro, esto lo dejamos a su 
libre elección. 

Femando García 



MSX 63 





A estas alturas, ya estaréis familiarizados con el 
singular personaje que aparece en los monentos 
claves (y no tan clave) de la revista. Se trata 
de nuestra mascota BUSY, de todos modos, 
será él quién se presente. 
Nos acompañará a lo largo de todos los 
números de MSX, donde le veremos en artículos, 
programas, etc, siempre se cuela justo a tiempo 
para vosotros le tengáis en cuenta. 
Nuestro simpático amigo, que es muy inteligente, 
procurará hacer que la revista sea agradable e 
interesante de ver. 

Además, como es muy coqueto, ya está 
pensando en regalar algo a quién mejor le 
dibuje. Claro que, como es muy exigente quiere 
que se realice con un programa. 



¡WOIA!. LOS CHICOS Oí LA MSX M£ HAN DICHO $06 ME VISTA 06 

£t/<W£ta y na ftese^TB yo mismo, toes ME IlAHo ¿Ü5/,CM 

7BJ&0 OOi AjJoS, soy toiJEto, C/ajco OloPUtiAS ¿tí CADA *J&, Y UNAS 

añteñas de oeucxm t£xtv&\. e L pifo ¡¡tupe vjyo es oñ poco Pectletío. 

1 cm 1 h«bikbltS.y~ 



(te 5QgflT) 



ft¿ ENCAMA LA ItíFódMATtCA Y sjoófe JOPO M&MMA.Q cotí Ló$ MSX. 
sjg***S mnejofiA, otíiüAü pe OiScoiy IM&ACES, SOrTWMe cAAntÚAO... 




HO lHT£RtmM& 6UAPETE 



Qo5 cil£RNáS.^) 

B\ je*jo ya syen flWPí £W~X¿) 

EL 6VAÍM ML VA A\Z C fST/WOi " 

<1K¿t PíMH LA CóHPoSlOfíA 




64 MSX 



INHIBIR LA TECLA 
DE STOP 

Si bien el BASIC de Microsoft, 
contempla la posibilidad de inhi- 
bir las interrupciones durante la 
ejecución de los programas en 
BASIC, mediante la bifurcación 
ON STOP para la protección de 
programas, no hay modo de con- 
seguir inhibir la tecla STOP, que 
si bien es útil en ciertos casos, 
no deja de ser molesta, a mi en- 
tender, en la mayoría de ellos. 
Seguramente, para su anula- 
ción, deberá recurrir a algún tipo 
de rutina en código máquina o 
bien cambiar algunos valores de 
la RAM del sistema, pero ante la 
posibilidad de conocer esta últi- 



ma, les agradecería me solucio- 
nasen el problema. 

Por último, les gradecería, me 
informasen también de si existe 
algún modo de almacenar pro- 
gramas en cinta con auto ejecu- 
ción. 

Xavier Casajuana Mogas 
Granollers 



Si desea desabilitar la tecla STOP 
solamente, no le quedará más reme- 
dio que modificar la rutina de lectura 
del teclado del sistema, tarea imposi- 
ble de realizar, a menos de que se 
tenga un buen conocimiento del fun- 
cionamiento de este. 

Respecto a la autoejecución de los 
programas en cassette, la única for- 



ma que conocemos es grabándo el 
programa en la instrucción: 

- SAVE "CAS: nombre " 

y cargarlo mediante la instrucción: 

- LOAD "CAS: nombre ". r 

La r al final indica al ordenador que 
ejecute (run) el programa en cuanto 
finalice su carga. 



LISTADOS ERRONEOS 

La presente es para comuni- 
carles mi profunda decepción 
cuando al introducir los progra- 
mas del primer número de su re- 



Jg MICROINFORMATICA DE CARTAGENA, S.A. 

MlCSA Principe de Asturias, 20. bajo Tlf 529839 Cartagena 



I GoldStar 



TODO UN MSX DE 64 K 




INCLUYE: 

• TARJETA 6 MESES GARANTIA 

• MANUAL USUARIO Y GUIA BASIC MSX 
EN CASTELLANO 

• CINTA DEMO 

• CINTA JUEGO. 

IMPORTADO POR: 

MICROINFORMATICA DE CARTAGENA, S.A. 

• GRAN CANTIDAD DE PROGRAMAS MSX DE IMPORTACION 




AHORA, POSEER UN ORDENADOR CON TODAS LAS 
VENTAJAS DEL SISTEMA MSX Y ALGUNOS DETALLES 

QUE NO TIENEN OTROS MSX ¡NO CUESTA MAS! 
PREGUNTE SU PRECIO EN CUALQUIER DISTRIBUIDOR 
MICSA ¡SE ASOMBRARA! 



IMPORTADORES. DISTRIBUIMOS COMO MAYORISTAS A TODO EL TERRITORIO NACIONAL 

SOLICITENOS INFORMACION 



PARTICULARES, SOLICITEN CATALOGO Y PRECIOS SIN COMPROMISO 6 PREGUNTENOS POR SU PROVEEDOR MAS CERCANO 



DIRIGIRSE A: 

MICROINFORMATICA DE CARTAGENA, S.A. 



C Príncipe Asturias. 20 Bs)o CARTAGENA. Telf.: 968-52 98 39 



MSX 65 



vista en mi ordenador, éste me 
respondía con mensajes de error, 
en casi todas las líneas. 

Me gustaría que me explicara 
la causa de estos errores que 
considero muy graves en una re- 
vista con sus pretensiones. 

Julio Antonio Pérez Morilla 
Granada 

Es difícil comprender que ningún 
listado de los publicados en la revis- 
ta, haya funcionado correctamente. 
Además en tu carta, no especificas 
ni el programa que te falló, ni la línea 
en que se cometió el presumible 
error. 

Los programas publicados se han 
probado en los ordenadores mencio- 
nados en la anterior respuesta, por lo 
que nos parece difícil entender se- 
mejantes fallos. Todos se han com- 
probado, más de una vez y por más 
de una persona. 

MSX CON EL CHIP Z800 

He leído en vuestra revista que 
se esperan los nuevos modelos 
MSX con un procesador Z800 de 
16 bits y un chip de gráficos tipo 
9229. Me gustaría saber si van a 
tardar en salir y cuando aparece- 
rán en el mercado español. 

Fidel Recio González 
Madrid 

La segunda generación de orde- 
nadores MSX ya se ha presentado 
en Japón. Las mejoras son, como ya 



(oüJ i\rii ui l 

Gn) fliCRO 

ULTIMAS NOVEDADES EN 
MSX (incluido SANYO con lápiz óptico) 
AMSTRAD 
DRAGON 

COMMODORE, etc. 
iiSANYO PC, y COMMODORE PC !! 

REINA. 31 (JUNTO A GRAN VIA) 
28004 MADRID. Tel. 232 70 88 



apuntas, mayor potencia a todos los 
niveles, pero sobretodo un chip de 
video que permite controlar 1 28K de 
video. Por el momento y debido al 
retraso exsitente en la creación del 
chip Z800, parece ser que la genera- 
ción de ordenadores MSX con pro- 
cesadores de 16 bits, todavía anda 
algo lejos. Desde luego, la ¡dea de 
los japoneses es realizar versiones 




más potentes de este estándar, lo 
que redundará en beneficio de todos 
los usuarios de estos ordenadores o 
de los que van a comprar uno, ya 
que la compatibilidad se va a mante- 
ner. 

De aparecer en el mercado espa- 
ñol, esto sería imprescindible, ya que 
igual al año que viene tenemos los 
primeros ordenadores de la segunda 
generación, como a finales de año. 
No existe fecha concreta, pero hay 
que tener en cuenta que en el mer- 
cado español lleva un atraso de bas- 
tantes años con respecto de los 
avances tecnológicos de otros paí- 
ses y más si se trata del Japón. 

Si ellos ya están en la segunda ge- 
neración, nosotros todavía estamos 
empezando a recorrer el camino, 
aunque tenemos la particularidad de 
hacerlo a pasos de gigante. 

En suma, la aparición de estos 
nuevos ordenadores todavía está sin 
aclarar. 



DIRECTOR: 

Juan Arencibia 

COORDINADOR EDITORIAL: 

Emiliano Juárez 
REDACCION: 

Fernando García, Santiago Gala, 
Ricardo García. Teresa Aranda, 
Francisco Mancera. 
DISEÑO: 

Ricardo Segura y Benito Gil 
Editada por 

PUBLINFORMATICA S.A. 
PRESIDENTE: 

Fernando Bolín 

DIRECTOR EDITORIAL: 

Norberto Gallego. 

Administración 

PUBLINFORMATICA 

GERENTE DE CIRCULACION Y 

VENTAS: 

Luis Carrero. 

PRODUCCION: 

Miguel Onieva. 

DIRECTOR DE MARKETING: 

Antonio González. 
SERVICIO AL CLIENTE: 

Julia González. 

Tel. 733 79 69 

ADMINISTRACION: 

Miguel Atance. 

JEFE DE PUBLICIDAD: 

Maria José Martin 

DIRECCION Y REDACCION: 

C/ Bravo Munllo. 377 5 o A 

Tel 733 74 13 

28020 MADRID 

PUBLICIDAD Y 

ADMINISTR ACCION: 

C/ Bravo Murillo 377 3 o E 

Tel 733 96 62-96 

Publicidad en Madrid 

Fernando Hernando 

Publicidad en Barcelona 

Olga Martorell 

C/ Pelayo, 12 

Tel. (93) 301 47 00 Ext 27-28. 

08001 BARCELONA 

Deposito Legal: M 16.755-1985 

Impreso en Héroes S.A 

C/ Torrelara, 8. 28016-MADRID 

Distribuye 

S G.E.L. Avda. Valdelaparra s/n 
Alcobendas (Madrid). 



suscripciones 

Rogamos dirí|a toda la 
correspondencia relacionada con 
suscripciones a 
MSX 

EDISA Tel. 415 97 12 

C/López de Hoyos, 141 5 0 

28002 MADRID 

(Para todos los pagos reseñar 

solamente MSX) 

Para la compra de ejemplares 

atrasados diríjanse a la propia 

editorial 

MSX 

C/Bravo Munllo. 377 5 ° A 

Tel 733 74 1 3 28020 MADRID 



S deseas colaborar en MSX remite tus 
artículos o programas a Bravo Munllo 
377, 5 0 A 28020 Madnd Los programas 
deberán estar grabados en cassette y ios 
artículos mecanograliados 

A efectos de remuneración se analiza 
cada colaboración aisladamente. e«tu 
diando su complejidad y calidad 




Programas Sony para ordenadores MSX 

Aborden. 

¿? $ £ $ $ .<$ £ 

M ° nke y Países Países Computador Computer TheSnowman Cubit Character 

Academy delMundo-1 delMundo-2 Adivino Billiards Collection 

Stop the express Hustler (Billar Data cartridge Quinielas y HomeWriter Sparkie Aprendiendo Binarybnd 

(Para el Tren) Americano) Reducciones inglés- 1 

tlÍL tú íf £?¿$ 

Creative Aprendiendo Antartic Mastermind Contabilidad Athletic Land E.l. Ficheros 
Greetings lnglés-2 Adventure Personal 

f? t? Si ú ú if ú $ 

El Ahorcado Dorodon La Pulga Cosmos Control BattleCross Mouser Crazy Train 

de Stocks 

Alibaba Juno First Carjamboree Tutor Trackand Blackjack Trackand DrillerTanks 

Field-1 Field-2 (Tanque 

(olimpiadas) (olimpiadas) Destructor) 







Y muchos 
más títulos 



Sonygraph Ninja Les Flics 

(El Samurai) 

Ordenador Doméstico 



HIT 3¡T 



Para lo que guste ordenar 




Ü GoldStar MSX 



MEMORIA RAM DE USUA- 
RIO: Una potente memoria 
de 64K le dará la fuerza 
necesaria para ejecutar los 
mejores programas del 
mercado 



CONECTORES DE EX- 
PANSION: Aseguran la co- 
nexión a gran cantidad de 
periféricos como impreso- 
ras, diskettes y joysticks 



ROM y VIDEO ROM: Per- 
miten al Goldstar ejecutar y 
trabajar con potentes pro- 
gramas de gráficos sin te- 
ner que utilizar la memoria 
RAM 



En el PORT DE CARTU- 
CHOS podrá conectar to- 
dos los programas MSX 
existentes, simplemente in- 
troduciendo el cartucho 
— jolvidese de esas compli- 
cadas cintas! 




La FUENTE DE ALIMEN- 
TACION está incorporada 
al ordenador, de manera 
que no tendrá que manejar 
ni ocultar transformador 
alguno 



EL TECLADO es del tipo 
QWERTY, con la incorpo- 
ración de teclas de función 
y del control del cursor. 



EL SONIDO es una de las 
mejores características del 
Goldstar —con 5 octavas y 
un sin fin de tonos increí- 
bles. 



¡¡49.500 ptsJ!